1、org.springframework.beans.factory.NoSuchBeanDefinitionException
关键在于proxy-traget-class="true"
问题:注解怎么实现?
public interface Performance {
void perform(String author, String pitBull);
}
public class Demo1Performance implements Performance {
public void perform(String author, String pitBull) {
System.out.println(author + " play " + pitBull);
}
}
public class Demo2Performance implements Performance {
public void perform(String author, String pitBull) {
System.out.println(author + " and " + pitBull);
}
}
public class AspectDemo {
public void beforePointCut() {
System.out.println("before point cut.");
}
public void afterPointCut() {
System.out.println("after point cut.");
}
public void watchPointCut(ProceedingJoinPoint point) {
try {
System.out.println("around before watch");
point.proceed();
System.out.println("arount after watch");
} catch (Throwable throwable) {
System.out.println("arount exception");
}
}
}
<aop:config proxy-target-class="true">
<aop:aspect ref="aspectDemo">
<aop:pointcut id="perform" expression="execution(* spittr.aop.Performance.perform(String, String))"/>
<aop:before method="beforePointCut" pointcut-ref="perform"/>
<aop:after method="afterPointCut" pointcut-ref="perform"/>
<aop:around method="watchPointCut" pointcut-ref="perform" />
</aop:aspect>
</aop:config>
2、org.springframework.beans.factory.NoUniqueBeanDefinitionException
关键在于primary="true"
public class Demo2Performance implements Performance {
public void perform(String author, String pitBull) {
System.out.println(author + " and " + pitBull);
}
}
public class SubPerformance extends Demo2Performance {
public void perform(String author, String pitBull) {
System.out.println("sub performance:" + author + " and " + pitBull);
}
}
<bean id="demo2Performance" class="spittr.aop.Demo2Performance" primary="true"/>
<bean id="subPerformance" class="spittr.aop.SubPerformance"/>