AOP:Aspect Oriented Programming 面向切面編程,4) AOP采取橫向抽取機制,主要用于事務管理、性能監視、安全檢查、緩存 、日志。
AspectJ是一個基于Java語言的AOP框架
AOP實現原理
1.jdk動態代理Proxy實現:需要接口+實現類
2.cglib包:只需要實現類
概念 | 描述 |
---|---|
target | 目標類,需要被代理的類 |
Joinpoint | 連接點,可以被攔截的方法 |
PointCut | 已經被增強的連接點 |
advice | 通知增強代碼 |
Weaving | 織入,把增強代碼advice應用到target上 |
proxy | 代理類 |
aspect | 切面,pointcut和advice的結合 |
AOP的原理,例子:
相關包
spring-framework-3.0.2.RELEASE-dependencies\org.aspectj\com.springsource.org.aspectj.weaver\1.6.8.RELEASE
xml配置AOP
<beans><!-- 配置UserService,和AOP無關,普通注入--><bean id="userService" class="UserServiceImpl"></bean><!-- 配置切面對象,advice--><bean id="myAspect" class="MyAspect"></bean><!-- 配置 aop --><aop:config><aop:aspect ref="myAspect"><!-- aop:指定切面--><!--定義一個切入點--><aop:pointcut id="myPointcut" expression="execution(* com.gyf.service.UserServiceImpl.*(..))"/><!-- 配置前置通知...--><aop:before method="myBefore" pointcut-ref="myPointcut" /></aop:aspect></aop:config>
</beans>
注解配置AOP
bean.xml配置
<!--掃描注解-->
<context:component-scan base-package="demo"/>
<!--AOP注解生效-->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
@Service("userService")//替代xml里的bean
public class UserServiceImpl implements IUserService{}@Component//替代xml里的bean
@Aspect//替代<aop:config><aop:aspect ref="myAscpect">
public class MyAspect{}@Before("execution(* demo.UserServiceImpl.*(..))")//替代<aop:pointcut>
public void myBefore(JoinPoint joinPoint){}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态