广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot 配置文件给实体注入值方式
  • 896
分享到

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

2024-04-02 19:04:59 896人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录配置文件给实体注入值properties用法yaml用法通过配置文件给实体类注入属性上面yml中注意也可以使用properties注入配置文件值注入方式1.1 从全局配置文件中读

配置文件给实体注入值

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

properties用法

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

yaml用法

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

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

// 实体类
@Component // 把实体类放入到spring容器中
@ConfigurationProperties(prefix = "student") // 识别配置文件
public class Student {
    private String name;
    private int age;
    private boolean sex;
    private Date birthday;
    private Map<String, Object> location;
    private String[] hobbies;
    private List<String> skills;
    private Pet pet;
    
    // .... set/get/toString
}
# yml 配置文件
student: 
	name: zs
	age: 23
	sex: true
	birthday: 2020/10/1
	location: {province: 湖北,city: 武汉, zone: 洪山}
	hobbies: [足球, 篮球]
	skills: [编程, 金融]
	pet: 
		nickName: wc
		strain: hsq

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

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

到 SpringBoot 测试文件中测试输出

    @Autowired
    Student student;
    @Test
    void contextLoads() {
        System.out.println(student);
    }

结果

Student{name='zs', age=23, sex=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: {province: "湖\n北",city: '武\n汉', zone: 洪\n山}
# 此时双引号中的转义字符会被识别,会换行,单引号和不加引号会原样输出

也可以使用properties注入

student.name=ls
student.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(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,set方法
    @Override
    public String toString() {
        String mapValue = "";
        
        if(this.maps!=null){
            for(String key:this.maps.keySet()){
                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,set方法
    
    @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>

测试

@SpringBootTest
class 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、false)等常量
  • ${key},从环境变量、配置文件中获取值
  • #{SpEL}, Spring的表达式语言,可以执行一些计算,调用一些函数
@Component
public class Person {
    @Value("${person.last-name}")  //@Value("#{'Lily'.toUpperCase()}")
    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,set和toString    
}

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

在 resources 目录下创建 person.properties

person.lastName = Lily
person.age = 20
person.birthDate = 2000/01/01
person.maps.one = 1
person.maps.two = 2
person.lists = a,b,ch
person.pet.name = wangcai
person.pet.age = 3

更改 Person 类中的注解

@Component
@PropertySource(value = {"classpath:person.properties"})
@ConfigurationProperties(prefix = "person")
public class Person {
    //...省略属性,get,set,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,set,toString
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringBoot 配置文件给实体注入值方式

本文链接: https://www.lsjlt.com/news/139568.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot 配置文件给实体注入值方式
    目录配置文件给实体注入值properties用法yaml用法通过配置文件给实体类注入属性上面yml中注意也可以使用properties注入配置文件值注入方式1.1 从全局配置文件中读...
    99+
    2022-11-13
  • SpringBoot怎么配置文件给实体注入值
    这篇文章主要介绍了SpringBoot怎么配置文件给实体注入值的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么配置文件给实体注入值文章都会有所收获,下面我们一起来看看吧。配置文件给实体注入...
    99+
    2023-06-29
  • springboot yml配置文件值注入方式
    目录yml配置文件值注入搭建项目创建实体类spring boot核心配置文件application.yml测试类运行自动注入yml文件和properties文件yml文件的自动注入c...
    99+
    2022-11-13
  • springboot yml配置文件值的注入方式是什么
    这篇文章跟大家分析一下“springboot yml配置文件值的注入方式是什么”。内容详细易懂,对“springboot yml配置文件值的注入方式是什么”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够...
    99+
    2023-06-26
  • springboot配置文件中使用${}注入值的方式有哪些
    这篇文章主要为大家展示了“springboot配置文件中使用${}注入值的方式有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“springboot配置文件中使用${}注入值的方式有哪些”这篇...
    99+
    2023-06-29
  • springboot配置文件中使用${}注入值的两种方式小结
    目录配置文件中使用${}注入值方式在springboot中使用System.setProperty设置参数配置文件自扫描spring配置文件${}的用法话不多说直接看就完事了配置文件...
    99+
    2022-11-13
  • Springboot@Value注入boolean设置默认值方式
    目录@Value注入boolean设置默认值问题描述问题分析解决方案@Value 源码阅读Spring解析@Value@Value注入boolean设置默认值 问题描述 Spring...
    99+
    2022-11-13
  • springboot application.properties 文件注入数组方式
    目录application.properties 文件注入数组在application.properties中注入value,list和map配置文件注解数据注入applicatio...
    99+
    2022-11-12
  • SpringBoot使用@PostConstruct注解导入配置方式
    目录使用@PostConstruct注解导入配置使用@PostConstruct注解,完成静态对象注入为什么static对象不可直接使用@Autowired注入?@PostConst...
    99+
    2022-11-12
  • SpringBoot使用spring.config.import多种方式导入配置文件
    目录简介导入classpath下的配置文件导入系统目录下的配置文件导入Nacos配置中心的配置文件总结简介 SpringBoot从2.4.x版本开始支持了导入文件的方式来加载配置参数...
    99+
    2022-11-13
  • springboot注入yml配置文件 list报错的解决方案
    目录springboot注入yml配置文件 list报错注入list的正确方法springboot yml 配置文件注入Map,Listspringboot注入yml配置文件 lis...
    99+
    2022-11-12
  • SpringBoot注入自定义的配置文件的方法详解
    目录一、简介二、代码实践2.1 通过@value注解实现参数加载2.2 通过@ConfigurationProperties注解实现参数加载2.3 通过@PropertySource...
    99+
    2022-11-13
  • 使用@Value值注入及配置文件组件扫描
    @Value值注入及配置文件组件扫描 spring配置文件对应的是父容器,springMVC配置文件产生的是子容器,前者一般配置数据源,事务,注解等,当然还可以进一步将一些配置细化到...
    99+
    2022-11-12
  • springboot配置文件读取pom文件信息方式
    目录配置文件读取pom文件信息解决的问题解决修改后的写法maven打包命令可能会出现的一些问题Pom文件依赖配置说明scope依赖范围配置文件读取pom文件信息 解决的问题 spri...
    99+
    2022-11-13
  • SpringBoot配置文件方式,在线yml文件转properties
    目录一、SpringBoot可以识别4种配置文件二、配置文件优先级1.后缀优先级2.目录顺序优先级(从上至下)三、分享一下yml与properties配置转换一、SpringBoot...
    99+
    2022-11-13
  • SpringBoot配置 Druid 三种方式(包括纯配置文件配置)
    记录一下在项目中用纯 YML(application.yml 或者 application.properties)文件、Java 代码配置 Bean 和注解三种方式配置 Alibab...
    99+
    2022-11-12
  • SpringBoot加载配置文件的实现方式总结
    目录一、简介二、代码实践2.1、通过@value注解实现参数加载2.2、通过@ConfigurationProperties注解实现参数加载2.3、通过@PropertySource...
    99+
    2022-11-13
  • SpringBoot框架配置文件路径设置方式
    目录SpringBoot配置文件路径设置自定义配置文件路径以及多profile配置文件一、什么是classpath二、自定义springboot配置文件路径三、多 profiles ...
    99+
    2022-11-12
  • SpringBoot实现yml配置文件为变量赋值
    目录yml配置文件为变量赋值1. 创建person类和Car类2. 为person类创建yml配置文件3.创建启动类在yml文件中配置变量例如:二维码的内容yml配置文件为变量赋值 ...
    99+
    2022-11-13
  • springboot application.properties文件注入数组方式是什么
    这篇文章主要介绍“springboot application.properties文件注入数组方式是什么”,在日常操作中,相信很多人在springboot application.properties文件注入数组方式是什么问题上存在疑惑,...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作