该章主要说明Spring的最核心原理,是作为一个使用Spring的开发者必须谨记且理清的原理
Spring 容器的主要核心一之控制反转(IOC)特点之依赖注入(DI)
依赖注入(DI)也是Spring最认同的技术模式,控制反转IOC是一个通用概念,它可以用许多不同的方式表达,依赖注入仅仅是控制反转的一个具体例子
当编写一个复杂的Java应用程序时,应用程序类应该尽可能的独立于其他Java类来增加这些类的可重用性,当进行单元测试时,可以使它们独立于其他类进行测试。依赖注入(有时被称为配线)有助于将这些类粘合在一起,并且同时让它们保持独立
到底什么是依赖注入?让我们将这两个词分开来看一看。这里将依赖关系部分转化为两个类之间的关联。例如,类 A 依赖于类 B。现在,让我们看一看第二部分,注入。所有这一切都意味着类 B 将通过 IoC 被注入到类 A 中。
依赖注入可以以向构造函数传递参数的方式发生,或者通过使用 setter 方法 post-construction。
Spring 容器的主要核心一之控制反转(IOC)
Spring容器是Spring框架的核心,容器将创建对象,将其连接在一起,配置它们,并管理它们的整个生命周期从创建到销毁。Spring容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称之为Spring Beans
Spring通过阅读配置元数据提供的指令使容器知道哪些对象需要进行实例化、配置、组装。配置元数据可以通过XML、YML、properties、Java注释或Java代码来表示。
Spring IOC容器利用Java的POJO类和配置元数据来生成完全配置和可执行的系统或应用程序。
IOC容器是具有依赖注入功能的容器,它可以创建对象,IOC容器负责实例化、定位、配置应用程序中的对象及建立对象之间的依赖。通常new一个实例,控制权由程序员控制,而IOC是指new实例的工作不由程序员来做,而是交给Spring容器实现。在Spring中BeanFactory是IOC容器的实际代表者
Spring 容器的主要核心一之面向切面(AOP)
Spring 框架的一个关键组件是面向方面的程序设计(AOP)框架。一个程序中跨越多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样常见的很好的关于方面的例子,比如日志记录、声明性事务、安全性,和缓存等等。
在 OOP 中模块化的关键单元是类,而在 AOP 中模块化的关键单元是方面。AOP 帮助你将横切关注点从它们所影响的对象中分离出来,然而依赖注入帮助你将你的应用程序对象从彼此中分离出来。
Spring 框架的 AOP 模块提供了面向方面的程序设计实现,可以定义诸如方法拦截器和切入点等,从而使实现功能的代码彻底的解耦出来。使用源码级的元数据,可以用类似于.Net属性的方式合并行为信息到代码中。