给属性赋值

创建一个新的项目,写入两个实体类一个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://img-blog.csdnimg.cn/20210619094004275.png) 配置完后用官方的测试类来测试 @SpringBootTest class Springboot02ConfigApplicationTests { @Autowired private Person person; @Test void contextLoads() { System.out.println(person); } }点击运行得出结果。如图,我只给了一个属性赋了值所以其他属性值为null ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619094028182.png) javaconfig 绑定我们配置文件的值。可以采取以上这些方式 三种方法比较 第一种,属于一个一个对应赋值 在所需要赋值的代码量少的时候比较便捷,在所需赋值量大的时候就不太适合使用代表着代码量就大。 第二中比较好用简单便捷代码量少批量赋值可以直接给实体类赋值,但注重空格的使用比如name:(空格)再写入值 第三种,属于一个一个对应赋值 指定配置文件就没有第二种高级了不能批量赋值,跟第一种那样赋值差不多,他是通过SPEL表达式取出配置文件中的值@Value(" name")namexiaohonghong.propertiesnamePersonname![](https://imgblog.csdnimg.cn/20210619094004275.png)@SpringBootTestclassSpringboot02ConfigApplicationTests@AutowiredprivatePersonperson;@TestvoidcontextLoads()System.out.println(person);null![](https://imgblog.csdnimg.cn/20210619094028182.png)javaconfig便使便使name:()SPEL@Value("{name}"),${name}是获取你所指定加载的配置文件中的值放到Person实体类里面对应的属性赋值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值