spring boot @ConfigurationProperties使用

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。也可以在内部类中使用该注解赋值。

猜你喜欢

转载自blog.csdn.net/qq_35368651/article/details/82630963
今日推荐