首页 > 作文

SpringBoot 配置文件给实体注入值方式

更新时间:2023-04-05 01:36:47 阅读: 评论:0

目录
配置文件给实体注入值properties用法yaml用法通过配置文件给实体类注入属性上面yml中注意也可以使用properties注入配置文件值注入方式1.1 从全局配置文件中读取配置到实体类 (@configurationproperties)1.2 全局配置文件注入值(@value)1.3 从指定文件读取并配置实体类(@propertysource+@configurationproperties)1.4 从指定文件读取并注入值(@propertysource+@value)

配置文件给实体注入值

springboot 默认的全局配置文件有两个 application.properties 和application.yml

properties用法

# 例如修改端口号 直接赋值rver.port=8888

yaml用法

# 例如修改端口号rver: port: 8888
yml中赋值是以键值对的形式,且利用缩进表示层级关系,同一级缩进必须一致大小写敏感,支持松散写法,且冒号后面必须有一个空格

通过配置文件给实体类注入属性

// 实体类@component // 把实体类放入到spring容器中@configurationproperties(prefix = "student") // 识别配置文件public class student {    private string name;    private int age;    private boolean x;    private date birthday;    private新员工入职感言 map<string, object> location;    private string[] hobbies;    private list<string> skills;    private pet pet;        // .... t/get/tostr如何撰写新闻稿ing}
# yml 配置文件student: name: zsage: 23x: truebirthday: 2020/10/1location: {province: 湖北,city: 武汉, zone: 洪山}hobbies: [足球, 篮球]skills: [编程, 金融]pet: nickname: wcstrain: hsq

在这里注意不同数据类型的写法,简单的数据直接赋值

# map类型和对象类型 的两种写法# 1.行内写法location: {province: 湖北,city: 武汉, zone: 洪山}pet: {nickname: wc, strain: hsq}# 2.分行写location:province: 湖北city: 武汉zone: 洪山pet: nickname: wcstrain: hsq
# 数组、list、t# 1、行内写法, 其中中括号还可以省略hobbies: [足球, 篮球]skills: [编程, 金融]# 2、分行写hobbies:- 足球- 篮球skills: - 编程- 金融

到 springboot 测试文件中测试输出

  @autowired  student student;  @test  void contextloads() {    system.out.println(student);  }

结果

student{name=’zs’, age=23, x=true, birthday=thu oct 01 00:00:00 cst 2020, location={province=湖北, city=武汉, zone=洪山}, hobbies=[足球,篮球], skills=[编程, 金融], pet=pet{nickname=’wc’, strain=’hsq’}}

上面yml中注意

# 如果对字符串加单引号,双引号会有什么区别location: {province: "湖北",city: '武汉', zone: 洪山}# 如果引号中只是字符串时没什么区别location: {provinc世界最强地震e: "湖\n北",city: '武\n汉', zone: 洪\n山}# 此时双引号中的转义字符会被识别,会换行,单引号和不加引号会原样输出

也可以使用properties注入

student.name=lsstudent.age=24...

其中properties文件和yml文件中的值可以互相引用。两个配置文件可以互补,properties文件优先级高于yml

另外如果要注入的值不在这两个默认配置文件中,这是需要使用@propertysource注解,遗憾的是该注解只支持properties文件,不支持yml文件

@propertysource(value = {"classpath:conf.properties"})public class student { ...

配置文件值注入方式

1.1 从全局配置文件中读取配置到实体类 (@configurationproperties)

配置文件 (application.yml)(写在application.properties也可以,格式变一下即可)

person:  lastname: mary  age: 16  birthdate: 2004/01/01  maps: {one:1,two:2,three:3}  lists:    - 1    - 2    - 3  pet:    name: wangcai    age: 3

实体类(javabean):

/** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * * @component: *     只有这个组件是容器中的组件,才能容器提供的@configurationproperties功能; * * @configurationproperties: *     告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定(默认配置文件为application.properties与       *     application.yml); * * prefix = "person": *       配置文件中哪个下面的所有属性进行一一映射 */@component@configurationproperties(prefix = "person")public class person {    private string lastname;    private integer age;    private date birthdate;    private map<string,object> maps;    private list<object> lists;    private pet pet;    //省略get,t方法    @override    public string tostring() {        string mapvalue = "";                if(this.maps!=null){            for(string key:this.maps.keyt()){                object value = this.maps.get(key);                mapvalue += key+"\t"+value+"\t";            }  说明文阅读题及答案      }        return "lastname:"+this.lastname+                "\nage:"+this.age+                "\nbirthdate:"+this.birthdate+                "\nmaps:"+mapvalue+                "\nlists:"+this.lists+                this.pet;    }}
public class pet {    private string name;    private integer age;    //省略get,t方法        @override    public string tostring() {        return "\npet:\n\tpet name:"+this.name+                "\n\tpet age:"+this.age+"\n";    }}

我们可以导入配置文件处理器,以后编写配置就有提示了(pom.xml)

<!--导入配置文件处理器,配置文件进行绑定就会有提示--><dependency>    <groupid>org.springframework.boot</groupid>    <artifactid>spring-boot-configuration-processor</artifactid>    <optional>true</optional></dependency>

测试

@springboottestclass demoapplicationtests {    @autowired    person person;    @test    void contextloads() {        system.out.println(person.tostring());    }}

1.2 全局配置文件注入值(@value)

@value 其实是spring中的注解,其功能使用xml文件描述是这样的:

<bean class="person">  <property name="lastname" value="字面量/${key}从环境变量、配置文件中获取值/#{spel}"></property><bean/>

其中property表示的是person类中的各项属性,name用于指定具体属性,value用于指定值。

value的值主要有3种:

字面量,也就是数字(1,2…)、字符串(abc)、布尔变量(true、fal)等常量${key},从环境变量、配置文件中获取值#{spel}, spring的表达式语言,可以执行一些计算,调用一些函数
@componentpublic class person {    @value("${person.last-name}")  //@value("#{'lily'.toupperca()}")    private string lastname;    @value("#{11*2}")    private integer age;    private date birthdate;    private map<string,object> maps;    private list<object> lists;    private pet pet;        //省略get,t和to致是什么意思string    }

1.3 从指定文件读取并配置实体类(@propertysource+@configurationproperties)

在 resources 目录下创建 person.properties

person.lastname = lilyperson.age = 20person.birthdate = 2000/01/01person.maps.one = 1person.maps.two = 2person.lists = a,b,chperson.pet.name = wangcaiperson.pet.age = 3

更改 person 类中的注解

@component@propertysource(value = {"classpath:person.properties"})@configurationproperties(prefix = "person")public class person {    //...省略属性,get,t,tostring}

要注意的是,propertysource 只支持properties文件,不支持yml文件读取。

1.4 从指定文件读取并注入值(@propertysource+@value)

创建配置文件

更改注释

@component@propertysource(value = {"classpath:person.properties"})public class person {        @value("${person.last-name}")    private string lastname;        //...省略属性,get,t,tostring}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-05 01:36:45,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/53d1631da4d3f7bc46d5baf8b1c706d1.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:SpringBoot 配置文件给实体注入值方式.doc

本文 PDF 下载地址:SpringBoot 配置文件给实体注入值方式.pdf

标签:配置文件   文件   属性   湖北
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图