关于spring中AOP切入点表达式问题

    @Before("execution(* xxx.controller..*(..)")
    public void logController2(){
        System.out.println("控制层注入");
    }

    @Before("within(xxx.service..*)")
    public void logService(){
        System.out.println("业务层注入");
    }
不知道为什么后一个within在容器启动时就会调用10次左右,![图片说明](https://img-ask.csdn.net/upload/201807/07/1530974872_839802.png),
然后调用一次service请求也会调用它好多次,正常对我这个程序而言应该只有两次才对,而上一个execution则是正常的,如果我不使用注解使用xml配置那么within则可以正常使用,真是郁闷,我新手,搞不懂为什么.!![图片说明](https://img-ask.csdn.net/upload/201807/07/1530974914_642651.png)请大神帮忙看一下


//补充一下,我的问题是为什么使用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

图片说明