我目前正在學習春季的繩索。
我試圖自動裝配方法的參數,像這樣:...是沒有存取方法
@RequestMapping("/hello")
public String something(@Autowire AnInterface ai) {
ai.doSomething();
return "/";
}
用下面的接口和類:
@Component
public interface AnInterface {
void doSomething();
}
@Component
public class Implementation implements AnInterface {
@Autowired private AnotherInterface ai;
public Implementation() { ; }
public Implementation(AnotherInterface ai) {
this.ai = ai;
}
public void setAi(AnotherInterface ai) {
this.ai = ai;
}
@Override
public void doSomething() {
System.out.println(ai.hello());
}
}
@Component
public interface AnotherInterface {
String hello();
}
@Component
public class AnotherImplementation implements AnotherInterface {
@Override
public String hello() {
return "hello";
}
}
但是,調用控制器的方法時,我得到一個IllegalArgumentException
:
Invoked method public abstract void AnInterface.doSomething() is no accessor method!
我在做什麼錯?
感謝提前:)
你運行該代碼?我認爲它會產生編譯時錯誤。 – SachinSarawgi
是的,它適用於我。 但是,我可能在複製代碼時發生錯誤。 你會得到什麼錯誤? – portux