@Before("execution(* xxx.controller..*(..)")
public void logController2(){
System.out.println("控制层注入");
}
@Before("within(xxx.service..*)")
public void logService(){
System.out.println("业务层注入");
}
不知道为什么后一个within在容器启动时就会调用10次左右,,
然后调用一次service请求也会调用它好多次,正常对我这个程序而言应该只有两次才对,而上一个execution则是正常的,如果我不使用注解使用xml配置那么within则可以正常使用,真是郁闷,我新手,搞不懂为什么.!请大神帮忙看一下
//补充一下,我的问题是为什么使用within(..*)以后会出现调用切面很多次的原因,不是问使用的格式!然后新发现使用@Around环绕使用within指定service直接所有service接口报错-说什么关于接口“xxx”的静态初始化不支持编译器限制的错误.
之前在对controller使用aop的时候,在controller中使用了@initbinder注解,也造成的一个请求多次进入切点方法的情况。你可以参考一下这种情况的解决方案
https://www.cnblogs.com/dreamowneryong/p/4055421.html
Spring切入点表达式常用写法
自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异。
下面给出一些常见示例的写法:
比如,下面是一个对Service包上所有方法的切面配置
aop:config
expression="execution(* *..service*..*(..))"/>
advice-ref="txAdvice"/>
/aop:config
Spring切入点表达式常用写法
自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异。
下面给出一些常见示例的写法:
比如,下面是一个对Service包上所有方法的切面配置
aop:config
expression="execution(* ..service..*(..))"/>
advice-ref="txAdvice"/>
/aop:config