抱歉:Google Traductor(英文基础)
通过方面实现的接口:
public interface MinReader {
void interceptThoughts();
}
实现接口的MinReader类,其中包含“Aspect”
@Aspect
public class Magician implements MinReader {
@Pointcut("within(paquetea.paqueteb.*)")
public void thinking() {
}
@Override
@Before("thinking()")
public void interceptThoughts() {
// Codigo
}
}
这是我的JavaConfig的一部分:
@Configuration
@EnableAspectJAutoProxy
public class SpringIdolConfig {
@Bean
public MinReader magician() {
return new Magician();
}
// Otros bean
}
问题是永远不会调用“interceptThoughts”方法。
我的“解决方案”是在我的JavaConfig中更改方法“魔术师”的返回类型: “MinReader” - > “精灵”
@Bean
public Magician magician() {
return new Magician();
}
更新:这些是其他豆类:
package paquetea.paqueteb;
public interface Thinker {
void thinkOfSomething(String thoughts);
}
package paquetea.paqueteb;
public class Volunteer implements Thinker {
@Override
public void thinkOfSomething(String thoughts) {
//code
}
}
这是我完整的javaconfig:
@Configuration
@EnableAspectJAutoProxy
public class SpringIdolConfig {
@Bean
public MinReader magician() {
return new Magician();
}
@Bean
public Thinker volunteer() {
return new Volunteer();
}
}
答案 0 :(得分:0)
我猜了一下,但我认为你的一个问题是你的切入点表达错了。如果我正确阅读the examples in here,您应该使用:
@Pointcut("within(paquetea.paqueteb..*)")
请注意..*
,而不是您拥有的.*
。我发现当我得到切入点错误时,它们可能很难调试,因为它们正常的失败方式是默默地不附加任何东西。 (我首选的技术是附加到使用自定义注释注释的方法;这样可以轻松控制正在发生的事情并且易于调试。)