注入静态属性值

时间:2016-06-14 15:18:37

标签: java spring properties

我在使用.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

1 个答案:

答案 0 :(得分:2)

您需要在属性文件中用大括号和美元符号括起名称以生成Spring表达式。

@Value("${email.from}")

this tutorial on spring values

中有更多信息

编辑:请注意,只有在Spring容器实例化和管理bean时,这才有效。如果只是调用new Email();,则无法将值注入bean。

bean IoC上阅读spring doco,以便更好地理解。以及how to instantiate beans.

上的更多信息