讓我先foremention,我面臨的問題是與
interceptThoughts(String thoughts)
方法,從第一個代碼塊,不打印爲什麼這個Spring Aspect不能像方法參數那樣打印?
我從春季行動中運行教程。有一個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;
}
}
我有我的Java BeanConfig
與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");
}
}
- NO Eorrrs
- 沒有例外
- 包在
@Pointcut(execution(
的Magician
方面是正確的 我有這兩個項目在我的Spring配置XML
<context:component-scan base-package="com.underdogdevs.myspringaspectj" /> <aop:aspectj-autoproxy />
的問題是從
Magician
方面@Before
不打印,因爲它應該。 我在這裏錯過了什麼嗎?爲什麼不打印?我有其他方面的方法,沒有任何參數,運行得很好。我沒有正確傳遞參數值嗎?
這可能是瘋狂的猜測,因爲你的方面對我來說似乎是正確的;你是否嘗試將志願者和魔術師註釋爲@ @ Component?或者將切入點放在@Before註釋中? –
!guido我剛剛嘗試過,但它不起作用。我想這就是_this_' '用於在上下文中掃描bean的情況,而不是真正指定'@ Component' –
,實際上'context:component-scan'是for掃描類*以搜索* @Component註釋(以及@Service,@Controller,...還有@Configuration,它是用@Component進行元註釋的) –