我无法在普通的实用程序类中注入配置,它在控制器类中工作正常。
@注入 配置配置
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(),并希望在此类中使用我想要注入配置的配置。
答案 0 :(得分:0)
依赖注入框架在构造对象的实例时注入依赖关系,因此如果您希望方法使用注入的组件,则它必须是非静态的。
你想做这样的事情,使你的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模块中配置绑定,允许您在测试中模拟它。