(二)Spring AOP:基于注解
来源:互联网 发布:华能营口电厂知乎 编辑:程序博客网 时间:2024/05/01 22:26
步骤一、二、五同上文。主要区别就在于步骤三、四,那么直接到步骤三吧。。。
三、切面类
package cn.cjc.spring.aop.aspect;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;@Aspectpublic class LogAnnotationAspect { /** * 切点1 */ @Pointcut("execution(* cn.cjc.spring.aop.service..*.*(String)) && args(aopArgs)") public void pointcut1(String aopArgs) { } /** * 切点2 */ @Pointcut("execution(* cn.cjc.spring.aop.service..*.*(..))") public void pointcut2() { } /** * 前置通知 */ @Before("pointcut2()") public void before(JoinPoint call) { String className = call.getTarget().getClass().getName(); String methodName = call.getSignature().getName(); System.out.println("前置通知:" + className + "类的" + methodName + "方法开始执行"); } /** * 后置通知 */ @AfterReturning("pointcut2()") public void afterReturn() { System.out.println("后置通知"); } /** * 最终通知 */ @After("pointcut1(userName)") public void after(String userName) { System.out.println(userName + ",最终通知"); } /** * 异常通知 */ @AfterThrowing("pointcut2()") public void afterThrow() { System.out.println("异常通知"); } /** * 环绕通知 */ @Around("pointcut1(userName)") public Object around(ProceedingJoinPoint call, String userName) { System.out.println("环绕通知"); this.before(call); Object result = null; try { result = call.proceed(); this.afterReturn(); } catch (Throwable e) { this.afterThrow(); } finally { this.after(userName); } return result; }}发现比上文中的切面类多了@Aspect、@Pointcut、@Before等注解,这些注解的作用就是把类声明为切面,把普通方法声明为切点或通知
四、spring配置文件beans.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <!--普通的bean声明--> <bean id="logService" class="cn.cjc.spring.aop.service.LogService"/> <bean id="logAnnotationAspect" class="cn.cjc.spring.aop.aspect.LogAnnotationAspect"/> <!--aop配置开始,表示支持AspectJ注解的切面类--> <aop:aspectj-autoproxy/></beans>测试方法和上文一样,不再赘述。
0 0
- (二)Spring AOP:基于注解
- spring aop 基于注解
- Spring aop基于注解
- Spring AOP - 基于注解
- Spring Aop(二)——基于Aspectj注解的Aop简单实现
- Spring AOP(二、注解配置实现)
- 基于注解spring AOP实现
- Spring基于注解配置AOP
- Spring基于注解形式的 AOP的原理流程及源码解析(二)
- Spring-AOP:基于AspectJ注解的AOP
- Spring AOP(二)(Spring中基于AOP的@AspectJ)
- spring AOP 基于注解(spring版本4.2.0)
- spring AOP(注解)
- Spring(十二)AspectJ框架开发AOP(基于注解)
- Spring In Action(三):基于注解的AOP
- spring实战-基于注解的面向切面编程(AOP)
- spring aop(二)--基于CGLib
- Spring学习总结6(AOP-基于注解)
- POJ3020 Antenna Placement
- Date 之TimeZone
- Unity3d 调用 Luajit C++ DLL 实现调用 Lua脚本
- ThreadLocal类的使用
- JAVA学习第9天 (2)数组
- (二)Spring AOP:基于注解
- 郁金香汇编逆向与外挂(61、62)
- android屏蔽返回键和home键等各个按键的方法
- SecureCRT远程登陆Linux主机
- 第八周项目四-String类的构造
- LeetCode题解:Compare two version numbers version1 and version2.
- matlab set函数
- Workshop 1-Lesson 8 Administering User Security
- 西北航空特价机票电话_百度推荐