AOP的原理,Java Spring AOP

 2023-10-05 阅读 35 评论 0

摘要:AOP:Aspect Oriented Programming 面向切面編程,4) AOP采取橫向抽取機制,主要用于事務管理、性能監視、安全檢查、緩存 、日志。 AspectJ是一個基于Java語言的AOP框架 AOP實現原理 1.jdk動態代理Proxy實現:需要接口+實現類 2.cglib包:

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){}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/116103.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息