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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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():mwl
NAME:mwl
2、配置变量中嵌套对象

在原有的配置文件中添加(first和second)信息,如:

info:
  name: mwl
  love: lwm
  type: alone
  first:
    hx: z
在Altium Designer中,栅格(Grids)是用来帮助我们在原理图或PCB设计中对元件和线路进行对齐和布局的工具。Altium Designer中有三种栅格:捕捉栅格、电气栅格和可视栅格。\[1\] 要设置Altium Designer中的栅格,可以通过菜单栏中的“视图(View)”选项,然后选择“栅格(Grids)”进行设置。另外,你也可以在原理图或PCB中右键单击,选择“选项(Options)”,然后选择“栅格(Grids)”进行设置。一般来说,可视栅格的大小最大,捕捉栅格和电气栅格的大小相对较小。\[2\] 在Altium Designer中,你可以使用快捷键G来设置栅格的大小。此外,你还可以使用Ctrl+G来设置栅格的属性,包括栅格点或线的显示粗细、栅格的颜色等。如果需要,你还可以新增自定义的区域栅格。同时,你可以通过栅格捕捉开关来控制是否捕捉某种栅格。\[3\] 所以,如果你想在Altium Designer中显示栅格,你可以通过上述方法进行设置,并根据需要调整栅格的大小和属性。 #### 引用[.reference_title] - *1* *2* [Altium Designer——捕捉栅格、电气栅格、可见栅格的意义及设置](https://blog.youkuaiyun.com/qq_20312079/article/details/105323803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Altium Designer 20 Grids、 Guides、 Axes 三种栅格的讲解](https://blog.youkuaiyun.com/weixin_44599693/article/details/126181146)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值