Spring Boot 注解探秘:常用配置值读取注解的魔力

在 Spring Boot 应用开发中,我们会常常借助Apollo,Spring Cloud Config等配置中心来集中管理配置信息,在拥有配置信息之后,高效且准确地读取这些配置信息无疑是极为关键的一环。今天我们就来介绍几个常用的用于配置值读取的注解。

@Value注解

@Value注解是 Spring 中一种非常方便的用于注入配置值的方式,支持基本数据类型。

java 复制代码
public class Demo1{
    @Value("${url}")
    private String url;

    @Value("${gray.switch:true}")
    private boolean graySwitch;
   
}

也支持数组以及列表类型。

java 复制代码
    @Value("${publish.id.array}")
    private int[] publishId;

    @Value("${employee.list}")
    private List<String> employee;

这里补充一种场景,假如apollo服务端配置了key为url, value为http://wuai.test.com

本地变量给了默认值。

java 复制代码
    @Value("${url:http://wuai.test1.com}")
    private String url;

yml给了默认值。

java 复制代码
url: "http://wuai.test2.com"

那么在应用启动的时候读取的url的值是哪个呢? http://wuai.test.com

如果服务端配置没有url,那么读取到的url是http://wuai.test1.com。本地变量没有默认值,读取到的url是http://wuai.test2.com

@ApolloJsonValue注解

@ApolloJsonValue是一个特定于 Apollo 配置中心的注解,它主要用于从 Apollo 配置中心读取以 JSON 格式存储的配置内容,并将其自动反序列化为 Java 对象。如,

java 复制代码
public class User{
    private String name;
    private String sex;
    private Integer age;
}

public class Demo2{
    @ApolloJsonValue("${user.config}")
    private User user;
}

以下是apollo配置。

@ConfigurationProperties 注解

@ConfigurationProperties注解是一个非常有用的工具,常用于将外部配置属性绑定到 Java 对象。

java 复制代码
@Component
@ConfigurationProperties(prefix = "event.listener")
public class EventListenerConfig {

    private boolean enable;
    
    private List<String> events;
    
}

@ConfigurationProperties注解还支持嵌套对象,如。

java 复制代码
@Component
@ConfigurationProperties(prefix = "event")
public class EventConfig {

    private Object obj;

    @Component
    @ConfigurationProperties(prefix = "event.teller")
    public class EventTellerConfig {

        private boolean enable;
        
        private List<String> events;
    
    }
    
}
相关推荐
guodingdingh2 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯4 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育4 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
掘金码甲哥4 小时前
这块终端神器, 必须吹爆!
后端
糖果店的幽灵4 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
Csvn5 小时前
📊 SQL 入门 Day 8:集合操作 — 用 SQL 做数学里的"并交差"
后端·sql
腻害兔6 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影6 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Miao121317 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔7 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程