[英]Unable to Inject Configuration in normal utility classes Play Framework 2.5.x
I am unable to Inject Configuration in normal utility classes ,it works fine in controller class. 我无法在普通实用程序类中注入配置,在控制器类中可以正常工作。
@Inject Configuration configuration @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");
}
}
Actually I want to remove Depricated Play.application() and want to use Configuration for that I want to Inject Configuration in this class. 实际上,我想删除Depricated Play.application()并想使用Configuration来在该类中注入Configuration。
Dependency injection frameworks inject dependencies when constructing instances of objects, so if you want a method to use an injected component it has to be non-static. 依赖注入框架在构造对象实例时注入依赖,因此,如果要使用插入组件的方法,它必须是非静态的。
You want to do something like this, making your sendEmail method non-static, and providing an interface: 您想要执行以下操作,使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");
}
}
Then inject an EmailService
instance into your controller constructors. 然后将EmailService
实例注入到您的控制器构造函数中。
Note: this uses @ImplementedBy
for simplicity but you could also configure the binding in your Guice module, allowing you to mock it in tests. 注意:为简单起见,这里使用@ImplementedBy
,但您也可以在Guice模块中配置绑定,从而允许在测试中模拟它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.