2017-06-21 74 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);