(1)
利用@Value("${}") 的注入方式在数量多的时候也是个麻烦。
如果注入的数据是一类,或者说是一个对象,还有更简便的方式。
1、在application.properties文件中写入
book.name= springboot
book.author=wangyi
book.price=25
2、自定义bean如下
@Component
@ConfigurationProperties(prefix="book")
public class TestProperyBean {
private String name;
private String author;
private int price;
//getter setter
//toString()
}
即使用@ConfigerationProperties注解,指明其前缀。
运行结果如下:
(2)
上述的资源文件,也可以不是application.properties。在它的所在目录建一个子目录config,然后建立xx.properties。
这时候在javabean中上的@ConfigerationProperties需要再配置一个属性,locations,例如:
@Component
@ConfigurationProperties(prefix="book",locations= {"classpath:config/xx.properties"})
public class TestProperyBean {
}
然而,真实情况是 报错。因为locations 属性在springboot2.x之后就取消了。这就是要注意版本的体现。
所以,正确是写法是
@Component
@ConfigurationProperties(prefix="book")
//引用自定义的配置文件时,确保application.properties没有相同属性。
@PropertySource("classpath:config/xx.properties")
public class TestProperyBean {
}
xx.properties
book.name=Spring Boot2.0
book.author=wangyi
book.price=250
运行结果: