【Springboot】注解读取配置文件自定义配置信息

本文介绍了如何在Spring Boot中通过注解读取配置文件中的自定义配置信息,包括基本变量、嵌套对象、list和map对象的读取方法。强调了配置文件在项目维护中的重要性,以及使用@ConfigurationProperties简化获取配置的步骤。
摘要由CSDN通过智能技术生成

springboot项目的配置文件信息一般放在application.yml(也有命名application.properties)文件中,当项目启动的时候,我们可以只修改配置文件中的配置,而不修改代码。如果不在配置文件中配置信息,虽然也可以实现功能,但是容易出现问题。

例如:跨系统交互时,另外一个系统(系统A)的域名或者端口发生变化,我们需要在自己的项目中对其地址信息进行修改。如果不在配置文件中进行配置,我们需要在代码中修改所有与A系统交互时的访问地址信息修改,如果存在多处与系统A交互,需要修改多处地方。修改相对较大,而且修改完之后,还需要重新发版。万一在修改时,不小心碰到了其他代码,修改了其他代码逻辑,这上线发版后出问题就麻烦了,就等着背一个线上case事故吧。

如果我们配置在配置中配置改变量,所有用到该变量的地方,我们从配置文件中进行读取。即使系统A的域名发生变化,我们可以只修改配置文件中改变量的值,不会影响到其他代码。当然,这时也有人问,你最终还是修改了东西,难免不会粗心大意碰到其他代码,这不是照样存在风险吗?

对于这个问题,可能是问问题的人还没进入公司工作,也可能是我了解的太low了。为什么这么说呢,因为这些配置文件中的值,是不由程序员进行维护的,一般这些配置文件在公司都是有专门的运维进行维护的,在上线的时候,你提供配置文件的线上配置,运维会对其进行配置或者对你配置的进行覆盖,因此,由运维进行操作,运维只会修改配置文件中的值,不会修改代码。(当然这是我所在公司的风格,其他公司我不了解)





OK,废话讲这么多了,开始正题。

1、基本配置变量读取

首先我们先介绍一下最基本的配置,没有数组list对象,没有map对象。

注意:每个键也就是(冒号左面的值),键之后必须要有一个空格,在idea下,键会变成黄色(也就是冒号后面要有一个空格)

配置文件中的配置:

info:
  name: mwl
  love: lwm
  type: alone

对于这种只包含变量的我们一般采取两种方式取值,推荐第二种方式。

第一种方法,(变量值少时推荐使用种方法,不然需要定义多个变量进行接收):

		@Value("${info.name}")
    private String NAME;
    @Test
    public void TestValue(){
   
        System.out.println(NAME);
    }

第二种方法,采用**@ConfigurationProperties注解,其中prefix对应配置文件前缀,@Component注解用于添加到容器中,@Data**注解属于插件lombok中的注解,用于减少get、set以及toString等方法的代码量。

package com.config;

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

/**
 * @author: MWL
 * @date: 2020/3/6 9:59 上午
 **/
@Component
@Data
@ConfigurationProperties(prefix = "info")
public class InfoConfig {
   
    private String name;
    private String love;
    private String type;
}

单元自测类方法测试:

    @Value("${info.name}")
    private String NAME;
    @Resource
    private InfoConfig infoConfig;

    @Test
    public void TestConfigValue(){
   
        System.out.println("infoConfig.toString():"+infoConfig.toString());
        System.out.println("infoConfig.getName():"+infoConfig.getName());
        System.out.println("NAME:"+NAME);

    }
//程序运行结果如下:
infoConfig.toString()InfoConfig(name=mwl, love=lwm, type=alone)
infoConfig.getName
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值