程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(4)

SpringBoot给属性赋值的方法

发布于2021-06-12 15:09     阅读(83)     评论(0)     点赞(13)     收藏(3)


开发工具与关键技术:IDEA.JAVA,
作者:民谣很穷,吉他很贵
撰写时间:2021年6月1日

先创建一个新的项目点击File-New-Project-SpringInitializr在这里插入图片描述
点击Next 在这里插入图片描述

第一框写com.xxx你想起的名字,第二是项目的名称,第三四五默认,第六选择8剩下的不用管点Next下一步 在这里插入图片描述
选择Web勾选SpringWeb点Next
在这里插入图片描述
第一个框是你前面创建的项目名称,第二是项目存放的位置。点击Finish创建就完成了。
之后呢就在src-main-java-com.chp右键NEW-Package文件,文件名为pojo,然后在pojo里面写入两个实体类点击pojo右键New-JavaClassr然后开始创建一个Dog,一个Person实体类,
在这里插入图片描述
在Dog实体类里面写相对应的信息和有参、无参Get和Set、toString方法。按住alt+insert弹出弹框选着相对应的方法就可以了。
Dog实体类代码
package com.chp.pojo; //这表示的是该实体类的所在的位置
import org.springframework.beans.factory.annotation.Value;// @Value jar包
import org.springframework.stereotype.Component; //@Component jar包
@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实体类代码
package com.chp.pojo; //这表示的是该实体类的所在的位置
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import sun.misc.Contended;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Component /注册bean/
/@ConfigurationProperties(prefix = “person”)将配置文件中配置的每一个属性的值,映射到这个组件中告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定
参数prefix = “person”:将配置文件中的person下面的所有属性一一对应
只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能
/
@ConfigurationProperties(prefix = “person”)
//javaconfig 绑定我们配置文件的值。可以采取这些方式
//加载指定的配置文件
//@PropertySource(value = “classpath:xiaohonghong.properties”)
public class Person {
//SPEL表达式取出配置文件中的值
//@Value("${name}")
private String name;//名称
private Integer age;//年龄
private Boolean happly;//是否开心
private Date birth;//出生日期
private 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.chp下的Springboot02ConfigApplicationTests来测试,这是官方的测试类不要乱来修改里面的代码。
package com.chp;
import com.chp.pojo.Dog;
import com.chp.pojo.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
@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 { @Autowired//自定装配 引用import org.springframework.beans.factory.annotation.Autowired;jar包之后自动装配Person实体类
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("${name}")name就是指定xiaohonghong.properties里面的name,获取里面的值赋值给Person里面的name。
在这里插入图片描述

配置完后用官方的测试类来测试
@SpringBootTest
class Springboot02ConfigApplicationTests {
@Autowired
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}点击运行得出结果。如图,我只给了一个属性赋了值所以其他属性值为null
在这里插入图片描述

javaconfig 绑定我们配置文件的值。可以采取以上这些方式
三种方法比较
第一种,属于一个一个对应赋值 在所需要赋值的代码量少的时候比较便捷,在所需赋值量大的时候就不太适合使用代表着代码量就大。
第二中比较好用简单便捷代码量少批量赋值可以直接给实体类赋值,但注重空格的使用比如name:(空格)再写入值
第三种,属于一个一个对应赋值 指定配置文件就没有第二种高级了不能批量赋值,跟第一种那样赋值差不多,他是通过SPEL表达式取出配置文件中的值@Value(" n a m e " ) , {name}"), name"){name}是获取你所指定加载的配置文件中的值放到Person实体类里面对应的属性赋值。

原文链接:https://blog.csdn.net/weixin_44545672/article/details/117703725



所属网站分类: 技术文章 > 博客

作者:怎么没有鱼儿上钩呢

链接:http://www.javaheidong.com/blog/article/222462/3e4575392cc254fd958a/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

13 0
收藏该文
已收藏

评论内容:(最多支持255个字符)