创建一个新的项目,写入两个实体类一个Dog,一个Person实体类。在Dog实体类里面写相对应的信息和有参、无参Get和Set、toString方法。
Dog实体类代码
@Component/注册bean/
public class Dog {
private String name; //名称
private Integer age; //年龄
public Dog() {//无参构造
}
public Dog(String name, Integer age) {//有参构造
this.name = name;
this.age = age;
}
public String getName() {return name; }//GetSet方法
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() {//toString方法
return “Dog{” +
“name=’” + name + ‘’’ +
“, age=” + age +
‘}’;
}
}
Person实体类代码
ivate Map<String,Object> maps;//键值对
private List lists;
private Dog dog; //Dog对象
public Person() {}//无参构造
public Person(String name, Integer age, Boolean happly, Date birth, Map<String, Object> maps, List lists, Dog dog) {//有参构造
this.name = name;
this.age = age;
this.happly = happly;
this.birth = birth;
this.maps = maps;
this.lists = lists;
this.dog = dog;
}
public String getName() {return name; }//get方法
public void setName(String name) {this.name = name; }//set方法
public Integer getAge() {return age; }
public void setAge(Integer age) {this.age = age; }
public Boolean getHapply() {return happly; }
public void setHapply(Boolean happly) {this.happly = happly; }
public Date getBirth() { return birth; } public void setBirth(Date birth) {this.birth = birth; }
public Map<String, Object> getMaps() {return maps; }
public void setMaps(Map<String, Object> maps) {this.maps = maps; }
public List getLists() { return lists; }
public void setLists(List lists) { this.lists = lists; }
public Dog getDog() { return dog; }
public void setDog(Dog dog) {this.dog = dog;}
@Override
public String toString() {//toSpring方法
return “Person{” +
“name=’” + name + ‘’’ +
“, age=” + age +
“, happly=” + happly +
“, birth=” + birth +
“, maps=” + maps +
“, lists=” + lists +
“, dog=” + dog +
‘}’;
}
}
接下来就给实体类里面的属性赋值。
1、用Dog实验一下在private String name;上面写上@Value(“小啊狗”)就等于把小啊狗赋值给了name
好了来验证一是否成功,点击test-java-com.ccr下的TestApplicationTests来测试,这是官方的测试类不要乱来修改里面的代码。
@SpringBootTest
class Springboot02ConfigApplicationTests { @Autowired//自定装配 引用import org.springframework.beans.factory.annotation.Autowired;jar包之后就会自动装配Dog实体类
Dog dog;
@Test
void contextLoads() { System.out.println(dog); }}//输出dog查看结果是否成功,运行如图
2、用YAML来实现赋值,在src-main-resources创建file (application.yaml)用Person实体类来测试
person:
name: 沾沾扎#KaTeX parse error: Expected 'EOF', got '#' at position 101: …{k1: v1,k2: v2}#̲键值对赋值 lists: …{person.ll:ll}设置默认值如果person.ll存在就写入相对应的值,不存在就直接赋值默认为person.ll: 等于 ll
age: 3
写完这个之后呢要在person的实体类里面配置@ConfigurationProperties(prefix = “person”)意思是将配置文件中配置的每一个属性的值,映射到这个组件中告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定参数prefix = “person”:将配置文件中的person下面的所有属性一一对应,只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能,在引用这个jar包的时候会提示警报,解决方法是在src同及下面的pom.xml里面的
这里写进下面的依赖代码就可以了
org.springframework.boot
spring-boot-configuration-processor
2.4.5
如图配置:
测试类来测试@SpringBootTest
class Springboot02ConfigApplicationTests {
Person person;
@Test
void contextLoads() { System.out.println(person); }}//输出person查看结果是否成功,如图
3、指定配置文件。先来创建一个配置文件。在src-main-resource下面New-Flie创建名称为xiaohonghong.properties文件。
@PropertySource(value = “classpath:xiaohonghong.properties”)//意思是加载指定的配置文件 属性加载一些资源在classpath:xiaohonghong.properties里面,这样就指定加载了配置文件。如图,用SPEL表达式取出配置文件中的值如@Value("
n
a
m
e
"
)
n
a
m
e
就
是
指
定
x
i
a
o
h
o
n
g
h
o
n
g
.
p
r
o
p
e
r
t
i
e
s
里
面
的
n
a
m
e
,
获
取
里
面
的
值
赋
值
给
P
e
r
s
o
n
里
面
的
n
a
m
e
。
!
[
在
这
里
插
入
图
片
描
述
]
(
h
t
t
p
s
:
/
/
i
m
g
−
b
l
o
g
.
c
s
d
n
i
m
g
.
c
n
/
20210619094004275.
p
n
g
)
配
置
完
后
用
官
方
的
测
试
类
来
测
试
@
S
p
r
i
n
g
B
o
o
t
T
e
s
t
c
l
a
s
s
S
p
r
i
n
g
b
o
o
t
02
C
o
n
f
i
g
A
p
p
l
i
c
a
t
i
o
n
T
e
s
t
s
@
A
u
t
o
w
i
r
e
d
p
r
i
v
a
t
e
P
e
r
s
o
n
p
e
r
s
o
n
;
@
T
e
s
t
v
o
i
d
c
o
n
t
e
x
t
L
o
a
d
s
(
)
S
y
s
t
e
m
.
o
u
t
.
p
r
i
n
t
l
n
(
p
e
r
s
o
n
)
;
点
击
运
行
得
出
结
果
。
如
图
,
我
只
给
了
一
个
属
性
赋
了
值
所
以
其
他
属
性
值
为
n
u
l
l
!
[
在
这
里
插
入
图
片
描
述
]
(
h
t
t
p
s
:
/
/
i
m
g
−
b
l
o
g
.
c
s
d
n
i
m
g
.
c
n
/
20210619094028182.
p
n
g
)
j
a
v
a
c
o
n
f
i
g
绑
定
我
们
配
置
文
件
的
值
。
可
以
采
取
以
上
这
些
方
式
三
种
方
法
比
较
第
一
种
,
属
于
一
个
一
个
对
应
赋
值
在
所
需
要
赋
值
的
代
码
量
少
的
时
候
比
较
便
捷
,
在
所
需
赋
值
量
大
的
时
候
就
不
太
适
合
使
用
代
表
着
代
码
量
就
大
。
第
二
中
比
较
好
用
简
单
便
捷
代
码
量
少
批
量
赋
值
可
以
直
接
给
实
体
类
赋
值
,
但
注
重
空
格
的
使
用
比
如
n
a
m
e
:
(
空
格
)
再
写
入
值
第
三
种
,
属
于
一
个
一
个
对
应
赋
值
指
定
配
置
文
件
就
没
有
第
二
种
高
级
了
不
能
批
量
赋
值
,
跟
第
一
种
那
样
赋
值
差
不
多
,
他
是
通
过
S
P
E
L
表
达
式
取
出
配
置
文
件
中
的
值
@
V
a
l
u
e
(
"
{name}")name就是指定xiaohonghong.properties里面的name,获取里面的值赋值给Person里面的name。 ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210619094004275.png) 配置完后用官方的测试类来测试 @SpringBootTest class Springboot02ConfigApplicationTests { @Autowired private Person person; @Test void contextLoads() { System.out.println(person); } }点击运行得出结果。如图,我只给了一个属性赋了值所以其他属性值为null ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210619094028182.png) javaconfig 绑定我们配置文件的值。可以采取以上这些方式 三种方法比较 第一种,属于一个一个对应赋值 在所需要赋值的代码量少的时候比较便捷,在所需赋值量大的时候就不太适合使用代表着代码量就大。 第二中比较好用简单便捷代码量少批量赋值可以直接给实体类赋值,但注重空格的使用比如name:(空格)再写入值 第三种,属于一个一个对应赋值 指定配置文件就没有第二种高级了不能批量赋值,跟第一种那样赋值差不多,他是通过SPEL表达式取出配置文件中的值@Value("
name")name就是指定xiaohonghong.properties里面的name,获取里面的值赋值给Person里面的name。![在这里插入图片描述](https://img−blog.csdnimg.cn/20210619094004275.png)配置完后用官方的测试类来测试@SpringBootTestclassSpringboot02ConfigApplicationTests@AutowiredprivatePersonperson;@TestvoidcontextLoads()System.out.println(person);点击运行得出结果。如图,我只给了一个属性赋了值所以其他属性值为null![在这里插入图片描述](https://img−blog.csdnimg.cn/20210619094028182.png)javaconfig绑定我们配置文件的值。可以采取以上这些方式三种方法比较第一种,属于一个一个对应赋值在所需要赋值的代码量少的时候比较便捷,在所需赋值量大的时候就不太适合使用代表着代码量就大。第二中比较好用简单便捷代码量少批量赋值可以直接给实体类赋值,但注重空格的使用比如name:(空格)再写入值第三种,属于一个一个对应赋值指定配置文件就没有第二种高级了不能批量赋值,跟第一种那样赋值差不多,他是通过SPEL表达式取出配置文件中的值@Value("{name}"),${name}是获取你所指定加载的配置文件中的值放到Person实体类里面对应的属性赋值。
相关文章
- 11-25给自己八年前的“网红面经”写个续篇
- 11-25到年底了,拥抱一下自己,给自己说一声辛苦了
- 11-25LeetCode 剑指 Offer II 069. 山峰数组的顶部(三分) / 38. 外观数列 / 282. 给表达式添加运算符
- 11-25获取数值型数组中大于60的元素个数,给数值型数组中不足60分的加20分。(数组,for循环,if条件判断语句)
- 11-25前端动态属性页面的 要用id做name 因为这样方便在提交表单时候取到值
- 11-25(WinForm)FormBorderStyle属性
- 11-25String[255]在高版本Delphi里还是被解释成Byte,总体长度256,使用StrPCopy可以给Array String拷贝字符串(内含许多实验测试)
- 11-25[WIP] 给女朋友讲计算机系列 -1- 比特、字节、数字的二进制、16进制表示
- 11-25web前端入门到实战:CSS属性width和height
- 11-25Springboot集成MapperFactory(ma.glasnost.orika.MapperFactory)类属性复制