SpringAOP处理通知中的参数
2017-06-08 09:35
429 查看
Spring借助AspectJ的切点表达式语言来定义Spring切面
在spring中尝试使用其他指示器时,会抛出IllegalArgument-Exception异常。
如上的这些指示器,只有exception指示器是实际执行匹配的,而其他都是用来限制匹配的。
切面表达式分析
带参数的切点表达式分解在该切点表达式中使用了args(trackNumber)限定符。表示传递给playTrack()方法的int类型参数也会传递到通知中去。参数名trackNumber也与切点方法签名中的参数相匹配。
创建切面
@Aspect public class TrackCounter { @Pointcut("execution(* com.wqh.aop.CompactDisc.playTrack(int))&&args(trackNumber)") public void trackPlayder(int trackNumber){} @Before("trackPlayder(trackNumber)") public void countTrack(int trackNumber) { System.out.println("前置通知:targetNumber=" + trackNumber); } }
连接点类
@Service public class CompactDisc { public void playTrack(int trackNumber){ System.out.println("trackNumber =" + trackNumber); } }
XML配置
<!--启用AspectJ的自动代理--> <aop:aspectj-autoproxy/> <!--声明bean--> <bean class="com.wqh.aop.TrackCounter"/> <!--自动扫描包下的类--> <context:component-scan base-package="com.wqh.aop"/>
测试
@Test public void testT(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext( new String[]{"classpath:/spring/applicationContext.xml"}); CompactDisc compactDisc = (CompactDisc) applicationContext.getBean("compactDisc"); compactDisc.playTrack(12); }
上面给指定方法传入的参数是12,在通知中获取到了该参数
另外:在xml中配置切面来处理通知中的参数,其实也差不多,只是把切点表达式放到了XML配置文件中。
相关文章推荐
- Spring AOP 处理通知中的参数【Spring 入门】
- 【第六章】 AOP 之 6.6 通知参数 ——跟我学spring3
- 基于xml配置的spring aop 的实现日志 和为通知传递参数
- Spring AOP 之三:通知(Advice)方法参数
- spring-aop中around切面中处理参数
- 【Spring实战】—— 10 AOP针对参数的通知
- 使用Spring AOP预处理Controller的参数
- 基于spring-aop对springmvc的参数的验证和处理
- Spring AOP——在通知(Advice)方法中获取目标方法的参数
- spring AOP 通知参数的传递
- 【Spring实战】—— 10 AOP针对参数的通知
- Spring学习笔记四(AOP中的通知参数和注解开发)
- spring aop事务通知(切面异常处理)
- 【第六章】 AOP 之 6.6 通知参数 ——跟我学spring3
- 【第六章】 AOP 之 6.6 通知参数 ——跟我学spring3
- 【第六章】 AOP 之 6.6 通知参数 ——跟我学spring3
- 使用Spring AOP预处理Controller的参数
- Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理
- Spring AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)
- spring MVC AOP 拦截方法参数并根据业务逻辑处理参数