我在使用.properties
文件中的值时遇到了一些麻烦。
我的my-properties.properties
文件看起来像这样:
email.host=smtp.googlemail.com
email.port=465
然后我的配置文件如下所示:
@Configuration
@PropertySource("classpath:my-properties.properties")
class MyProperties{
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){
return new PropertySourcesPlaceholderConfigurer();
}
}
然后我试图在这个电子邮件类中使用它:
@Component("MyProperties.class")
public class AutomatedEmail {
private String recipient;
private String fullName;
private String tempPassword;
private Email email;
@Value("email.from")
private String from;
...
public AutomatedEmail(){
}
public AutomatedEmail(final String recipient, final String fullName, final String tempPassword) throws EmailException {
this.recipient = recipient;
this.fullName = fullName;
this.tempPassword = tempPassword;
}
但总是回来说它是空的。我也尝试了一种Autowired方法并在MyProperties类中设置了整个电子邮件对象,但在我调用我的构造函数之后它也是null
答案 0 :(得分:2)
您需要在属性文件中用大括号和美元符号括起名称以生成Spring表达式。
@Value("${email.from}")
this tutorial on spring values
中有更多信息编辑:请注意,只有在Spring容器实例化和管理bean时,这才有效。如果只是调用new Email();
,则无法将值注入bean。
在bean IoC上阅读spring doco,以便更好地理解。以及how to instantiate beans.
上的更多信息