AOP 是OOP的补充,主要为了解决 代码混乱 代码分散 这2个问题
AOP的好处:
1、每个事务逻辑 位于一个位置,代码不分散,便于维护和升级
2、业务模块更简洁,只包含核心业务代码
AOP的主要编程对象是切面(验证参数,前置日志,add(),后置日志)
+—*/这个例子中的2个切面就是验证参数,日志(包括前置日志,后置日志)
切面即被模块化后的特殊对象
AspectJ的作用:开发者无需修改源代码,但又可以为这些组件添加新的功能,AspectJ采用编译时增强的解决方案,需要使用自己的编译器来编译Java文件。
Spring 则采用运行时生成动态代理的方式来增强目标对象,Spring AOP用纯
java实现,不需要特定的编译工具。Spring的AOP代理由IoC容器负责生成、管理,
其依关系也是由IoC管理,因此,AOP代理可以直接使用容器中的其他Bean实例作为目标,Spring默认使用Java动态代理来创建AOP代理。
AOP编程中,需要程序员参与的只有三个部分:
1、定义普通业务组件;
2、定义切入点,一个切入点可能横切多个业务组件
3、定义增强处理,增强处理就是在AOP框架为普通业务组件组织代入的处理动作
一旦定义了合适的切入点和增强处理,AOP框架将会自动生成AOP代理,AOP代理的方法大致满足:
AOP代理的方法=增强处理+目标对象的方法
现在通常建议使用AspectJ方式来定义切入点和增强处理,在这种方式下,Spring有2种选择来定义切入点和增强处理:
1、基于注解的“零配置”方式,使用@Aspect、@Pointcut等注解来标注切入点和增强处理
2、基于XML配置文件的管理方式,使用Spring配置文件来定义切入点和增强处理
时间: 2024-10-12 02:37:58