面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的
职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将
那些影响多个类的行为封装到可重用的模块中。
AOP
和 IOC 是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂
问题。在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中
才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将
它们应用到需要日志的组件上。当然,优势就是 Java 类不需要知道日志服务的存在,也
不需要考虑相关的代码。所以,用 Spring AOP
编写的应用程序代码是松散耦合的。
AOP
的功能完全集成到了 Spring
事务管理、日志和其他各种特性的上下文中。
IOC
容器
Spring
设计的核心是 org.springframework.beans
包,它的设计目标是与 JavaBean
组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的
底层中介。下一个最高级抽象是 BeanFactory 接口,它是工厂设计模式的实现,允许通
过名称创建和检索对象。BeanFactory
也可以管理对象之间的关系。
BeanFactory
支持两个对象模型。
单态 模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索 。
Singleton
是默认的也是最常用的对象模型。对于无状态服务对象很理想。
原型 模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模
型最适合。
bean
工厂的概念是 Spring
作为 IOC 容器的基础。IOC 将处理事情的责任从应用程序代
码转移到框架。正如我将在下一个示例中演示的那样,Spring
框架使用 JavaBean 属性
和配置数据来指出必须设置的依赖关系。
BeanFactory
接口
因为 org.springframework.beans.factory.BeanFactory 是一个简单接口,所以可以
针对各种底层存储方法实现。最常用的 BeanFactory
定义是 XmlBeanFactory,它根据
XML
文件中的定义装入 bean
,如清单 1
所示。
清单 1. XmlBeanFactory
BeanFactory
factory
=
new
XMLBeanFactory(new
FileInputSteam("mybean.xml"));