奇怪的Spring AspectJ 代理的目标bean会初始化2次的问题

使用aspectj的注释方式实现aop

配置:

<context:component-scan base-package="com.aspire.nmp" />

<aop:aspectj-autoproxy proxy-target-class="true"/>

 

代码:

@Pointcut("bean(testServiceImpl)")
 public void testService() {
  
 }

 

@Around("testService()")
 public Object test(ProceedingJoinPoint point) throws Throwable {
  System.out.println("testService()");
  return point.proceed();
 }

 

spring的bean应该是单例的,但是发现testServiceImpl的构造函数被调用2次,不知是何原理。

 

将<aop:aspectj-autoproxy proxy-target-class="true"/>替换为<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />

就不会有这个问题

 

 

目前还在看源代码,哪位大侠能帮忙解一下?

 

你可能感兴趣的:(spring,AOP,aspectj)