问题
在测试类中,使用默认的application.yml可以读取到配置信息,切换为application.properties后无法读取,但是通过启动类又可以正常读取。
排查过程
1、怀疑自己的application.properties写法有问题,但是启动类能正常读取,排除。
2、怀疑测试类的注解存在问题,网上说的Junit5和4使用的注解不太一样,更换后并没有什么变化。(PS:新的@SpringBootTest已经集成了Junit5的@ExtendWith,根本不像网上说的需要添加)。
3、在指定自定义配置文件的情况读取成功了,自定义配置如下:
@Component
@PropertySource(value = {"classpath:config/user.properties"})
@ConfigurationProperties(prefix = "user")
public class UserSetting {
private String username;
// 忽略get和set
}
感觉是默认的配置文件application.properties没有加载。
解决方案
1、在pom文件中加上如下内容:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
2、加上以上内容后还是不生效,可以重新选择maven的install