软件系统通常由多个组件构成每个组件负责一个特定的功能领域但是这些组件也经常承担它们的核心功能之外的额外责任系统服务(例如日志事务 管理和安全性)经常发现自己跑到了别的组件的领域里而这些组件的核心职责是其他事情结果就是所谓的代码纠缠或者更简单点儿说一团糟面向方 面编程是一种试图解决这个问题的编程技术它把关注点的隔离提升为核心的编程概念
使用 AOP 时仍然是在一个地方定义系统的公共功能但是可以声明性地定义 如何 和 在哪里 应用这个功能如果对横切关注点(例如日志和事务管理)进行了模块化那么不用修改每个单独的类就可以向代码中添加新特性这类模块化的关注点称作 方面
您知道么?
可以在任何 Java? 企业版(JEE) 服务器中使用 Spring 框架的功能而且还可以调整它的大多数功能使其适合不受控环境Spring 的中心焦点就是支持不被束缚在特定 JEEE 服务上的可重用业务和数据访问对象可以跨 JEE 环境(Web 或企业 JavaBean(EJB))独立应用程序测试环境等等重用这类对象而不会有任何麻烦
以一个企业应用程序为例这类应用程序通常要求类似于安全性和事务支持的服务显然可以把这些服务的支持直接编写到要求服务的每个类当中但是更 希望能够不必为大量事务性上下文编写同样的事务处理代码如果使用 Spring AOP 进行事务处理那么可以声明性地安排适当的方法调用而不必逐个安排