Spring发展到现在早就已经不仅仅是Spring框架本身的内容了,Spring目前提供了大量的基于Spring的项目,可以用来降低我们的开发难度,提高效率。下面我给大家举几个例子

Spring Boot: 使用默认开发配置来实现快速开发。
Spring Cloud: 为分布式系统开发提供工具集。
Spring Data: 对主流的关系型和NoSQL数据库的支持。
Spring Security: 通过认证和授权保护应用。
Spring Session: 提供一个API及实现来管理用户会话信息。这里顺便多说两句,session是存在服务器缓存中的,跟cookie不一样他是客户端存储,但是我们都知道客户端与服务端沟通时都是通过Http来完成请求的,但是Http是一个无状态的协议,那么服务端又是如何判断这个session的所属者呢,其实秘密就在cookie中,在cookie中会有一个叫jsessionId的属性,服务端在第一次请求结束后会往cookie中塞给他一个jsessionId以此来区分,那么既然是存储在服务端的,他就一定会占用服务器资源,而且如果我们项目发展到了后期单一的内存就已经无法满足日常需求,那么就会有了一致性的问题,那么就有了这么几个解决办法(这是我目前能想到的):1.token,通过token令牌来识别用户,并存储在一个key-value的存储系统中例如 redis,mongoDB等。2.通过负载均衡,让他们每台服务器各自维护自己的。3.服务器session复制,让整个集群中的服务器的session始终保持一致。

有些同学可能最开始使用的项目框架采用 spring+springMVC+Herbinate,而现在用的是springBoot等等
这里我说一下spring和springMvc的区别,Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring。还记得IOC么,控制反转,我们知道正常我们创建一个对象最简单的方法就是new xxxx();但是我们的service中可能依赖了不止一个service难道我们每一个都需要new吗,显然不可能,通过spring,我们配置到需要注册的Bean,也就是我们xml里配置的内些,当然我们可以直接配置包名这样就都注册到了,等到日常开发时我们哪里需要用直接注入就好了,当然这个控制反转是通过java的反射机制实现,就是在我们项目启动时动态创建这个对象并且能够调用他的方法。早在java最开始的时候,通过反射机制创建对象是很耗时间的,后来sun意识到了这个问题,这也是最开始spring不流行的原因了,但是截至目前如果没记错的话,反射创建对象仍然要比new慢1倍的速度。
有好奇的同学可能又要问springBoot和spring区别在哪里,其实springBoot推出就是为了便捷我们开发的,他是spring框架的一个扩展,免去了spring烦人的xml配置,springBoot提出约定大于配置,这在微服务的大环境下对我们大有裨益。

总结: spring/springBoot 我们可以把它理解为一辆会动的车,至于你想给他加涡轮还是星空顶这就要看你的选择了