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; }