2017-06-21 73 views
0

我想了解用於播放框架的依賴注入工作流程。瞭解依賴注入 - 播放Java

我有以下的DI代碼,如果寫在控制器中,它工作得非常好,但是當寫入單獨的類時,注入配置和mailerClient不會實例化屬性。

DI只能在Java的Play框架的控制器中工作嗎?

我的類,它無法工作:

public class EmailConfig { 

    @Inject MailerClient mailerClient; 

    @Inject Configuration configuration; 


    /** 
    * 
    */ 
    public EmailConfig() { 
     // TODO Auto-generated constructor stub 
    } 

    public void sendEmail(String subjectConfigName, String toConfigName, String text, String from){ 
     Email email = new Email(); 
     email 
      .setSubject(this.configuration.getString(subjectConfigName)) 
      .setFrom(from) 
      .addTo(this.configuration.getString(toConfigName)) 
      .setBodyText(text); 

     this.mailerClient.send(email); 
    } 

} 

任何輸入的歡迎。謝謝。

+0

你使用哪個版本的fw? –

+0

2.5!問題中提到的行爲是否對你有意義?或者我在這裏發生了一些荒謬的錯誤? – user1242321

+0

我只是想確保我爲你使用正確的語法。請檢查我的答案並讓我知道。 :) –

回答

0

控制器是自動注入,所以你可以簡單地使用@Inject從中注入的依賴,而你的分離類是既不自動也沒有任何定義綁定。因此,應該通過明確地呼叫注射器Play.current().injector()(對於玩2.5)來完成這種注射。試試這個:

private Configuration configuration = Play.current().injector().instanceOf(Configuration.class);