问题:yml文件的属性如下
nuoche:
privateNumber:
appkey: 7L57717mzPP6cr
appSecret: iWoVQ5s4kr75D
domainName: https://www.caocao.com
如何通过@ConfigurationProperties注解读取这些值,并把值封装到一个类(PrivateNumber)中?
解决办法
1.添加一个配置类
@ConfigurationProperties(prefix = MyValue.PREFIX)
@Service("myProperties")
@Data
public class MyProperties {
public static final String PREFIX = "nuoche";
private PrivateNumber privateNumber;
@Data
public static class PrivateNumber{ // 要加static描述符,不然会报异常
private String appkey;
private String appSecret;
private String domainName;
}
}
2.编写一个测试类
@SpringBootTest
@RunWith(SpringRunner.class)
public class MyPropertiesTest {
@Autowired
private MyProperties myProperties;
@Test
public void say() {
System.out.println(myProperties.getPrivateNumber().getAppkey());
}
}
3.测试:先启动整个工程,然后再运行测试方法。最后得到结果为:7L57717mzPP6cr
4.注意:当MyProperties在一个job中使用时,在测试类中直接new这个job,然后执行会读取不到MyProperties的内容,此时正确的做法是使用@Autowired注解,引入job来进行测试。