我正在Spring Boot 1.5.9
项目中工作,我正在尝试使用外部化配置配置我的课程。
我按照Baeldung指南进行了操作,并使用@Component
,@Configuration
和@PropertySource
为我的@ConfigurationProperties
课程添加了注释。
@Component
@Configuration
@PropertySource("classpath:application-email.properties")
@ConfigurationProperties(prefix="email")
public class EmailDispatcherService extends Thread {
private String test;
public EmailDispatcherService() {
System.err.println(test);
start();
}}
首先,我尝试将@PropertySource("classpath:application.properties")
设置为在默认文件中写入,当这不起作用时,我创建了自己的文件,而不是naming convention。
我还将configuration-processor
添加到pom.xml
。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
在application.properties
和application-email.properties
文件中,我添加了email.test=MyTest
。不过,我的test
字符串始终为null
。
答案 0 :(得分:2)
您需要使用@Value
注释显式设置变量的值。
@Component
@Configuration
public class EmailDispatcherService extends Thread {
private String test;
public EmailDispatcherService(@Value("${email.test}") String emailTest) {
System.out.println(emailTest);
test = emailTest;
start();
}}