Java SpringAOP技术中注解方式是什么
Java SpringAOP技术中注解方式是什么
这篇文章主要为大家展示了“JavaSpringAOP技术中注解方式是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaSpringAOP技术中注解方式是什么”这篇文章吧。
1.配置xml扫描注解
<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!--开启注解扫描--><context:component-scanbase-package="com.qcby"></context:component-scan></beans>
2.配置注解
packagecom.qcby;importorg.springframework.stereotype.Component;@Component(value="user")publicclassUser{//连接点/切入点publicvoidadd(){System.out.println("add......");}}
给切面类添加注解 @Aspect,编写增强的方法,使用通知类型注解声明
@Component@Aspect//生成代理对象publicclassUserProxy{}
3.配置文件中开启自动代理
<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!--开启扫描--><context:component-scanbase-package="com.qcby"></context:component-scan><!--开启Aspect生成代理对象--><aop:aspectj-autoproxy></aop:aspectj-autoproxy></beans>
4.通知类型注解
@Before -- 前置通知
@AfterReturing -- 后置通知
@Around -- 环绕通知(目标对象方法默认不执行的,需要手动执行)
@After -- 最终通知
@AfterThrowing -- 异常抛出通知
packagecom.qcby;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.annotation.*;importorg.springframework.stereotype.Component;@Component@Aspect//生成代理对象publicclassUserProxy{//增强/通知---》前置通知@Before(value="execution(publicvoidcom.qcby.User.add())")publicvoidbefore(){System.out.println("前置通知.............");}//环绕通知@Around(value="execution(publicvoidcom.qcby.User.add())")publicvoidaround(ProceedingJoinPointproceedingJoinPoint)throwsThrowable{System.out.println("环绕前置.............");//执行被增强的方法proceedingJoinPoint.proceed();System.out.println("环绕后置.............");}//最终通知@After(value="execution(publicvoidcom.qcby.User.add())")publicvoidafter(){System.out.println("最终通知.............");}//后置通知@AfterReturning(value="execution(publicvoidcom.qcby.User.add())")publicvoidafterReturning(){System.out.println("后置通知.............");}//异常通知@AfterThrowing(value="execution(publicvoidcom.qcby.User.add())")publicvoidafterThrowing(){System.out.println("出错了.............");}}
5.测试类
packagecom.qcby.test;importcom.qcby.User;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassUserTest{@TestpublicvoidaopTest1(){ApplicationContextapplicationContext=newClassPathXmlApplicationContext("SpringConfig.xml");Useruser=(User)applicationContext.getBean("user");user.add();}}
6.结果
以上是“JavaSpringAOP技术中注解方式是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!