Spring Dawning AOP: 面向切面编程提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程的不足。除了类以外,AOP提供了切面。切面对关注点进行模块化,例如横切多个类型和对象的事物管理。 (切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。事物管理是J2EE应用中一个关于横切关注点的很好例子。在Spring AOP中,切面可以使用通用类(基于模式的风格)或者在普通类中以@Aspect注解(@AspectJ风格)来实现。 ) Spring的一个关键的组件就是AOP框架。尽管如痴,spring IOC容器并不依赖AOP,这意味这您可以自由选择是否使用AOP。AOP提供了强大的中间件解决方案,使得Spring IOC容器更加完善。 Spring中所使用的AOP: •提供声明式企业服务,特别是为了代替EJB声明式服务.其中最重要的服务是 – 声明性事物管理 (declarative transaction management) ,这个服务建立在Spring的抽象事物管理 (transaction abstraction)之上。 •允许用户实现自定义的切面,用AOP来完善OOP的使用。 使用spring: 类的创建和管理大多由Spring完成。 什么是依赖: 两个元素中一个定义发生改变则会引起另一个元素发生变化,则称这连个元素之间存在依赖关系。 依赖注入: 明确的定义组件接口,独立开发各个组件,然后根据组件间的依赖关系组装运行的设计开发模式。 为什么使用依赖注入(Dependency Injection): 解决过于复杂的软件系统。 组件化的思想 依赖注入: 强制将组件的构建和使用分开 目的:解耦合,实现每个组件块时只关注组件内部的事情。组件的构建和使用分开。 耦合的坏处:如果改变程序的一个模块要求另一个模块同时发生变化,就认为这连个模块发生了耦合。 Spring带来的好处: •依赖注入(Dependency Injection): 编写程序时不用关系其依赖的组件。 •面向方面编程(Aspect Object P):将程序中涉及的公共问题集中解决。 AOP 要解决的问题: 我们在构建系统的目的是解决业务问题。在编写业务成或数据访问层时必须出现try catch finally 块,这些代码是不可或缺的一部分,在编码实现业务逻辑层,需要先解决如痴繁琐而且复杂的多个方面的事情,注意力被分散,业务代码质量得不到保障。 AOP target: AOP原理:将散布在系统的公共功能集中解决 AOP实现:采用一个机制 1. 将复杂的需求分解出不同方面 2. 专心做事 3. 组装起来运行 AOP机制: 1. 在方法调用前、后、环绕或跑出异常时,织入代码 2. 通过代理范围被代理的类 总结 1. Spring 包含哪些内容: a) 依赖注入容器、 b) AOP实现、 c) DAO/ORM支持、 d) Web集成 2. 依赖注入的好处是? 分离组建的使用和实现 3. Spring 怎样实现依赖注入? 添加getter/setter方法。使用配置文件组装 4. 面向方面编程的好处是? 将方面分离出来,写代码时只需关注当前业务逻辑 5. Spring 怎样实现AOP? 在方法法调用前或后或抛出异常时织入方面代码 POJO:(plain old Java objects)