让我先提一下,我面临的问题是方法,从第一个代码块开始,而不是打印
interceptThoughts(String thoughts)
我正在运行Spring in Action的教程。有一个Magician
类implements MindReader
与方法interceptThoughts(String thoughts)
和接口getThoughts()
@Aspect
public class Magician implements MindReader {
private String thoughts;
@Pointcut("execution(* com.underdogdevs.myspringaspectj."
+ "Thinker.thinkOfSomething(String)) && args(thoughts)")
public void thinking(String thoughts) {
}
@Override
@Before("thinking(thoughts)")
public void interceptThoughts(String thoughts) {
System.out.println("Intercepting volunteer's thoughts : " + thoughts);
this.thoughts = thoughts;
}
@Override
public String getThoughts() {
return thoughts;
}
}
该方面应该通过方法读取该Volunteer
接口implements Thinker
的思想thinkOfSomething(String thoughts)
public class Volunteer implements Thinker {
private String thoughts;
@Override
public void thinkOfSomething(String thoughts) {
this.thoughts = thoughts;
System.out.println("Something");
}
public String getThoughts() {
return thoughts;
}
}
我有我的javaBeanConfig
和Magician
Volunteer
@Configuration
public class BeanConfig {
@Bean
public MindReader magician() {
return new Magician();
}
@Bean
public Thinker volunteer() {
return new Volunteer();
}
}
我正在尝试运行它以获取在Magician
方法中打印行的interceptThoughts
方法
public class App {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("spring-idol.xml");
System.out.println();
Thinker volunteer = (Thinker)context.getBean("volunteer");
volunteer.thinkOfSomething("This is what I'm thinking");
}
}
- 没有错误
- 没有例外
- 包装
@Pointcut(execution(
在Magician
方面是正确的 我的 Spring 配置 xml 中有这两项
<context:component-scan base-package="com.underdogdevs.myspringaspectj" /> <aop:aspectj-autoproxy />
问题是
@Before
从这Magician
方面来说没有按应有的方式打印。我在这里错过了什么吗?为什么不打印?我还有其他方面的方法,它们不带参数并且运行得很好。我没有正确传递参数值吗?