Spring AOP

AOP简介:

AOP (Aspect Oriented Programming):面向切面程序,通过预编译方式和运行动态代理实现程序功能的统一维护的一种技术
主要功能:日志记录,性能统计,安全控制,事务处理,异常处理等等

AOP的实现方式:

  • 预编译:AspectJ
  • 运行期动态代理(JDK动态代理、CGLib动态代理):SpringAOP、JbossAOP

       

       

Spring框架中AOP的用途:

  • 提供了声明式的企业服务,特别是EJB的替代服务的声明
  • 允许用户定制自己的方面,已完成OOP与AOP的互补使用
  • AOP面向对象      OOP各个方面横切

Spring的AOP实现:

  • 纯java实现,无需特殊的编译过程,不需要控制类加载器层次
  • 目前只致辞方法执行连接点(通知Spring Bean的方法执行)
  • 不是为了提供最完整的AOP实现,而是侧重于提供一种AOP实现和Spring IOC容器之间的整合,用于帮助解决企业应用中的常见问题
  • Spring AOP不会与AspectJ竞争,从而提供综合全面的AOP解决方法

有接口和无接口的Spring AOP实现区别:

  • Spring AOP默认使用标准的JavaSE动态代理作为AOP代理,这使得任何接口(或者接口集)都可以被代理
  • Spring AOP中也可以使用CGLIB代理(如果一个业务对象并没有实现一个接口)

       

切点:

       

ProxyFactoryBean:

  • 创建Spring AOP代理的基本方法是使用org.springframework.org.framework.ProxyFactoryBean
  • 这恶意完全控制切入点和通知(advice)以及他们的顺序
  • 使用ProxyFactoryBean或者其他IOC相关类来创建AOP代理的最重要好出是通知和切入点也可以由IOC来管理
  • 被代理类没有实现任何接口,使用CGLIB代理,否则JDK代理
  • 通过设置ProxyTargetClass为true,可强制使用CGLIB
  • 如果目标类实现了一个(或者多个)接口,那么创建代理的类型将依赖ProxyFactoryBean的配置
  • 如果ProxyFactoryBean和ProxyInterfaces属性被设置为一个或多个全限定接口名,基于JDK的代理将被创建
  • 如果ProxyFactoryBean的ProxyFactoryfaces属性没有被设置,但是目标类实现了一个(或者更多)接口,那么ProxyFactoryBean将自动检测到这个目标类已经实现了至少一个接口,创建一个基于JDK的代理 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值