作者:一一哥

1.x时代的Spring把所有的功能都集中在一个项目中,包含了核心的IoC、AOP,也包含了其他一些比如JDBC、Mail、ORM、事务、定时任务、Spring MVC等功能.
支持基于XML的配置;
支持依赖注入与声明式事务。
只支持基于XML的配置,而且通过xml文件来配置bean,当项目不断扩大的时候,需要将xml配置信息分放到不同的配置文件中,因此需要频繁的在java类和xml配置文件中切换.
同时支持注解与xml. 应用程序的基本配置用xml,比如数据源、资源文件等;业务代码的开发用注解,比如Service中注入bean等.
随着JDK1.5开始支持注解,Spring 2.x也增加了对注解的支持。因此可以使用注解对Bean进行声明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发.
从Spring3.x开始提供了基于Java类的配置方式,如@Configuration 和@Bean的出现.@Configuration 作用于类上,相当于一个xml配置文件;@Bean 作用于方法上,相当于xml配置中的.至此注解慢慢的取代了xml配置.
使用Java类的配置方式可以更好的理解你配置的Bean.现在一般都推荐使用Java类的配置的方式.
Spring 4.x全面支持JDK8.0;
支持Lambda表达式;支持@Scheduled和@PropertySource重复注解;
提供了空指针终结者Optional;
对核心容器进行增加;
支持泛型的依赖注入、Map的依赖注入、Lazy延迟依赖的注入、List注入、Condition条件注解注入、对CGLib动态代理类进行了增强;
支持了基于Groovy DSL的配置,提高Bean配置的灵活性.
Spring 4.x开始,Spring MVC基于Servlet 3.0 开发,并且为了方便Restful开发,引入了新的RestController注解器注解,同时还增加了一个AsyncRestTemplate支持Rest客户端的异步无阻塞请求.
一张图概括:
Spring发展到今天,旗下拥有诸多的子项目,从最基本的Spring IoC/AOP使用,到安全管理,再到大数据,Spring已经逐渐渗入到各个领域.
目前几乎所有JavaWeb相关的开发都可以在Spring中找到合适的方案,为了防止在开发的时候重复造轮子,下边梳理一下Spring的各个子项目,做到心中有数.