springboot如何读取自定义属性

 更新时间:2022年02月16日 11:08:00   作者:尧、木子  
大家好,本篇文章主要讲的是springboot如何读取自定义属性,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

很多时候,我们开发当中,需要通过配置自己的属性信息来满足不同环境下的应用部署,因此需要springboot能够读取我们自定义的属性,常用的读取自定义属性有@Value和@ConfigurationProperties,下面分别做简单的介绍
1、@Value

在这里插入图片描述

可以看到点击进去源码,表明当前注解,可以使用在属性、方法或者构造方法上,支持SPEL表达式和占位符注解方式,此标签通常是单个配置加载的数据
例如在配置文件中,配置了name和age两个属性

lixl:
  person:
    name: lixl
    age: 20
我们在代码中的属性上,直接注解
/**
 * @author lixl
 * @description
 * @date 2022/2/15
 */
@Component
public class Person {

    @Value("${lixl.person.name}")
    private String name;

    @Value("${lixl.person.age}")
    private String age;

    @Override
    public String toString() {
        return "name:"+this.name+";age:"+this.age;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

可以看到,正常打印

在这里插入图片描述

修改代码,将其注解在方法上,运行main方法,依然可以使用

	@Value("${lixl.person.name}")
    public void setName(String name) {
        this.name = name;
    }

再次修改代码,将其注解在构造方法的参数上,依然能够进行注入

    public Person(@Value("${lixl.person.name}")String name, @Value("${lixl.person.age}")String age) {
        this.name = name;
        this.age = age;
    }

另外,如果我们需要给定@Value默认值,也是可以的,例如我们删除了name字段,同时在@Value中增加默认值

// 默认是通过 : + 默认值 给定
 public Person(@Value("${lixl.person.name:张三}")String name, @Value("${lixl.person.age}")String age) {
        this.name = name;
        this.age = age;
 }

在这里插入图片描述

运行结果,也是正常的

我们再来看看Spel表达式

   @Value("#{'男'}") // 增加性别字段
   private String gender;
	
	// 修改toString方法打印性别
	public String toString() {
        return "name:"+this.name+";age:"+this.age+";gender:"+this.gender;
    }

在这里插入图片描述

运行结果正常通过,还有其他很多Spel表达,此处就不完全列举了
比如我们在配置文件中指定了属性name=‘java’ 在需要使用的组件中,设定@Value("${name}") 注解在相应的字段上,springboot就会自动加载。当然,@Value还可以使用Spel表达是,注入值使用@Value("#{Spel}").

2、@ConfigurationProperties 可以对配置文件中,某一类前缀开头的属性整体进行注入,例如:
配置文件中,有如下配置

test.name='lixl'
test.age='age'

配置类需要按照一下方式编写

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component // 首先本身要是springboot容器中的组件
@ConfigurationProperties(prefix = "test") // 指定前缀
public class ConfigTest {

    private String name;

    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

目前都是用到的springboot默认的配置文件,我们也可以自己指定配置文件
使用@PropertySource(“classpath:xxx.properties”),进行加载配置文件

以上就是springboot如何读取自定义属性的详细内容,更多关于springboot读取自定义属性的资料请关注脚本之家其它相关文章!

相关文章

  • springboot如何获取request请求的原始url与post参数

    springboot如何获取request请求的原始url与post参数

    这篇文章主要介绍了springboot如何获取request请求的原始url与post参数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • HashMap vs TreeMap vs Hashtable vs LinkedHashMap

    HashMap vs TreeMap vs Hashtable vs LinkedHashMap

    这篇文章主要介绍了HashMap vs TreeMap vs Hashtable vs LinkedHashMap的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Java enum实现自增赋值方式

    Java enum实现自增赋值方式

    这篇文章主要介绍了Java enum实现自增赋值方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java数据存储的“双子星”对决(Map和Set的区别)

    Java数据存储的“双子星”对决(Map和Set的区别)

    文章主要介绍了Java中Map和Set两种数据结构的定义、实现、方法及应用场景,Map用于存储键值对,键唯一,值可重复;Set用于存储唯一元素,无序,两者都提供了丰富的操作方法,如添加、删除、查找等,感兴趣的朋友一起看看吧
    2025-02-02
  • java 中堆内存和栈内存理解

    java 中堆内存和栈内存理解

    这篇文章主要介绍了java 中的堆内存和栈内存的知识,有需要的朋友可以参考下
    2017-03-03
  • SpringBoot中restTemplate请求存在乱码问题的解决方法

    SpringBoot中restTemplate请求存在乱码问题的解决方法

    这篇文章主要介绍了SpringBoot中restTemplate请求存在乱码问题的解决方法,文中有相关的图文和代码示例供大家参考,对大家的解决问题有一定的帮助,需要的朋友可以参考下
    2024-11-11
  • 利用Thumbnailator轻松实现图片缩放、旋转与加水印

    利用Thumbnailator轻松实现图片缩放、旋转与加水印

    java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,这篇文章主要介绍了利用Thumbnailator如何轻松的实现图片缩放、旋转与加水印,需要的朋友可以参考下
    2017-01-01
  • java实现日历窗口小程序

    java实现日历窗口小程序

    这篇文章主要为大家详细介绍了java实现日历窗口小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • JAVA多线程编程实例详解

    JAVA多线程编程实例详解

    这篇文章主要介绍了JAVA多线程编程,结合实例形式总结分析了多线程、锁、线程池等相关原理及使用技巧,需要的朋友可以参考下
    2019-09-09
  • java版十大排序经典算法:完整代码

    java版十大排序经典算法:完整代码

    优秀的文章也不少,但是Java完整版的好像不多,我把所有的写一遍巩固下,同时也真诚的希望阅读到这篇文章的小伙伴们可以自己去从头敲一遍,不要粘贴复制!希望我的文章对你有所帮助,每天进步一点点
    2021-07-07

最新评论