SpringBoot系列---【yml配置文件中的值如何注入到java配置類中?】


1.第一種屬性注入方式:@Value,注意這里的前提是,屬性值寫在application.yml中

@Component //注冊bean
public class Dog {
    @Value("${name}") //配置文件中配置name=張三
  private String name;
  @Value(
"3")
  private Integer age;
//省略get,set }

2.准備工作一個application.yml文件

person:
  name: zhangsan
  age: 18
  happy: false
  birth: 2021/01/28
  maps: {k1: v1,k2: v2}
  lists:
   - code
   - girl
   - music
  dog:
    name: 笨笨
    age: 2

3.第二種屬性注入方式:@ConfigurationProperties(prefix=" "),單獨使用,不用配合@Value。

/*
@ConfigurationProperties作用:
將配置文件中配置的每一個屬性的值,映射到這個組件中;
告訴SpringBoot將本類中的所有屬性和配置文件中相關的配置進行綁定
參數 prefix = “person” : 將配置文件中的person下面的所有屬性一一對應
*/
@Component //注冊bean
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}

4.第三種屬性注入方式:@PropertySource :加載指定的配置文件,通常配合@Value注解使用。

@ConfigurationProperties:默認從全局配置文件中獲取值;

這里自己寫一個person.yml,我這里省略了。

示例1:

@PropertySource(value = "classpath:person.yml")
@Component //注冊bean
public class Person {

    @Value("${name}")
    private String name;

    ......  
}

示例2:

這里自己寫一個user.yml,我這里省略了。

@Component //注冊bean
@PropertySource(value = "classpath:user.yml")
public class User {
    //直接使用@value
    @Value("${user.name}") //從配置文件中取值
    private String name;
    @Value("#{9*2}")  // #{SPEL} Spring表達式
    private int age;
    @Value("男")  // 字面量
    private String sex;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM