Spring-boot可以用类注解@ConfigurationProperties代替在字段上一个一个使用@value注解,这种方式最好使用yml文件。因为properties文件默认的编码不是utf-8。需要使用@PropertySource注解来规定字符集。而且需要引入处理器。我试了一下,不好使呢为什么。。。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
另外官方文档介绍使用@ConfigurationProperties注解还需要在@EnableConfigurationProperties注解上注册pojo。
@Configuration
@EnableConfigurationProperties(AcmeProperties.class)
public class MyConfiguration {
}
就像上面这样,但我试了一下。不用这个注释完全可以。又是不知道为什么。
下面是例子
pojo:
@Repository
@ConfigurationProperties(prefix = "car")
//@PropertySource(value = "classpath:application.properties",encoding = "utf-8")
public class car {
List<String> list =new ArrayList<>();
public List<String> getList() {
return list;
}
public void setList(ArrayList<String> list) {
this.list = list;
}
HashMap<String,String> driver;
public HashMap<String, String> getDriver() {
return driver;
}
public void setDriver(HashMap<String, String> driver) {
this.driver = driver;
}
int speed;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
yml:
car:
name: 奇瑞
driver:
"[driverOne]": 王
"[speed]": 100
list: 王 李
speed: 180
@ConfigurationProperties注解有一个属性prefix一个前缀,类似过滤用的吧。在上方yml中就是根元素car。也可以在内部类中使用该注解赋值。