Spring可以做很多事情,它为企业级的开发提供了丰富的功能,但是这些功能的底层实现都依赖于它的两个核心特性,
也就是依赖注入(dependency injection, DI)和面向切面编程(aspect-oriented programming,AOP)。
为降低Java开发的复杂性,Spring采取了以下四种策略:
基于POJO的轻量级和最小侵入编程;
基于依赖注入和面向接口实现松耦合;
基于切面和惯例进行声明式编程;
基于切面和模板减少样板式代码。
依赖注入的本质就是创建应用组件之间协作的行为;
面向切面编程是指我们在一个地方定义通用功能(如日志功能),然后通过声明的方式定义该功能要以何种方式在何处应用,而无需修改受影响的类。