文章目录
- 一、@ConfigurationProperties 简单介绍
- 二、@ConfigurationProperties 使用示范
- 1、创建两个 javaBean
- 2、在 SpringBoot 全局配置文件写入需要注入的值
- 2.1 application.yml 写法
- 2.2 application.properties 写法
- 3、在类上加上 @ConfigurationProperties 注解
- 4、测试
一、@ConfigurationProperties 简单介绍
通过使用 @ConfigurationProperties 注解在类上,在SpringBoot 全局配置文件就可以为类的对象的属性注入对应的值。
二、@ConfigurationProperties 使用示范
1、创建两个 javaBean
Demo.java
package com.example.springbootboot02config.bean;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class Demo {
private String lastName;
private Integer age;
private Double salary;
private Boolean boss;
private Date birthday;
private Map<String, Object> map;
private List<String> list;
private DataDemo dataDemo;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Boolean getBoss() {
return boss;
}
public void setBoss(Boolean boss) {
this.boss = boss;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public DataDemo getDataDemo() {
return dataDemo;
}
public void setDataDemo(DataDemo dataDemo) {
this.dataDemo = dataDemo;
}
@Override
public String toString() {
return "Demo{" +
"lastName='" + lastName + '\'' +
", age=" + age +
", salary=" + salary +
", boss=" + boss +
", birthday=" + birthday +
", map=" + map +
", list=" + list +
", dataDemo=" + dataDemo +
'}';
}
}
DataDemo.java
package com.example.springbootboot02config.bean;
public class DataDemo {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "DataDemo{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2、在 SpringBoot 全局配置文件写入需要注入的值
2.1 application.yml 写法
demo:
lastName: zhangsan
age: 20
salary: 10000
boss: true
birthday: 1888/08/08
map:
key1: value1
key2: value2
list:
- one
- two
- three
dataDemo:
name: java
age: 8
2.2 application.properties 写法
demo.last-name=lisi
demo.age=30
demo.birthday=1989/9/12
demo.boss=false
demo.salary=23000
demo.map.key1=value1
demo.map.key2=value2
demo.list=one, two, three
demo.data-demo.name=zhangsan
demo.data-demo.age=8
此时,在全局配置文件写的值还没有被注入到对应的对象中,需要在类上加入对应的注解。
3、在类上加上 @ConfigurationProperties 注解
@ConfigurationProperties(prefix = "demo")
@Component
public class Demo {
}
@ConfigurationProperties(prefix = “demo”):匹配配置文件里前缀为 demo 的配置
@Component:加上该注解,Spring 容器中才可以找到该类
4、测试
@SpringBootTest
class SpringbootBoot02ConfigApplicationTests {
@Autowired
Demo demo;
@Test
void contextLoads() {
System.out.println(demo);
}
}
输出结果为:
Demo{lastName='zhangsan', age=20, salary=10000.0, boss=true, birthday=Wed Aug 08 00:00:00 CST 1888, map={key1=value1, key2=value2}, list=[one, two, three], dataDemo=DataDemo{name='java', age=8}}
如果发现其中哪个值你配置了,但是却没有成功注入,检查 JavaBean 是否属性对应的 set 方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)