[英]Unable to Inject Configuration in normal utility classes Play Framework 2.5.x
我無法在普通實用程序類中注入配置,在控制器類中可以正常工作。
@Inject配置配置
public class EmailService {
public static boolean sendEmail(final AppUser appUser,final String mailString,String subject) {
final Properties props = new Properties();
final String auth = Play.application().configuration().getString("mail.smtp.auth")
final String starttls = Play.application().configuration().getString("mail.smtp.starttls.enable");
}
}
實際上,我想刪除Depricated Play.application()並想使用Configuration來在該類中注入Configuration。
依賴注入框架在構造對象實例時注入依賴,因此,如果要使用插入組件的方法,它必須是非靜態的。
您想要執行以下操作,使sendEmail方法為非靜態方法,並提供一個接口:
@ImplementedBy(EmailServiceImpl.class)
public interface EmailService {
void sendEmail(AppUser appUser, String mailString, String subject);
}
@Singleton
public class EmailServiceImpl implements EmailService {
private final Configuration config;
@Inject
public EmailServiceImpl(Configuration config) {
this.config = config;
}
public void sendEmail(AppUser appUser, String mailString, String subject) {
final Properties props = new Properties();
final String auth = config.getString("mail.smtp.auth")
final String starttls = config.getString("mail.smtp.starttls.enable");
}
}
然后將EmailService
實例注入到您的控制器構造函數中。
注意:為簡單起見,這里使用@ImplementedBy
,但您也可以在Guice模塊中配置綁定,從而允許在測試中模擬它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.