我的班级:
@Aspect
public class ServiceAspect {
@Before("execution(public * com.test.server.support.service.*.Client.*(..))")
public void before(JoinPoint joinPoint) {
System.out.println("....");
}
}
spring-config.xml仅限内容:
<context:annotation-config/>
弹簧servlet.xml中:
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<context:component-scan base-package="com.test.client.support">
<context:include-filter type="aspectj" expression="com.test.client.support.aspect.ServiceAspect"/>
</context:component-scan>
<context:component-scan base-package="com.test.manager"/>
<aop:aspectj-autoproxy proxy-target-class="true"/>
我希望以这种方式可以xxx.Client
每个类调用以下方法,自动创建连接。
当项目当前运作时,AOP无响应。
然而,如果在之前
("execution (public * com.test.server.support.service.*.Client.*(..))")
IntoPointcut
("@within (org.springframework.stereotype.Controller)")
,您可以在方法之前输入
注意:客户端类是自动生成的Thrift IDL。
答案 0 :(得分:3)
Spring AOP仅适用于声明为Spring Beans的类的公共方法。我猜你的内部类可能不是Spring Beans。所以要么你应该
<context:load-time-weaver/>
而不是<aop:aspectj-autoproxy/>
),请参阅Spring documentation, chapter 9.8。 更新: AspectJ中的within()
切入点也包含内部类,这是记录在案的。如果这也适用于Spring AOP,我不知道。