Spring注解之@Value基于Apollo或者YAML文件为静态变量赋值
摘要:Spring Boot微服务中,把在Apollo配置中心或者YAML文件里配置的属性赋值给静态变量。
综述
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
需求背景:假设自己的项目已经使用了Apollo,需要修改配置,并且,想要为静态属性赋值。
小编楼兰胡杨在《Spring注解之@Value注解读取配置文件属性》中,介绍了如何为非静态属性赋值,如何为List、Map和Array类型的变量赋值。接下来,本文以 ReadApolloConfig 代码为例,演示如何为静态属性赋值。
为静态变量赋值
基于注解@Value、@Component和@EnableApolloConfig注入配置,@Value注解可以实时更新配置。
@Component
@EnableApolloConfig
public class ReadApolloConfig {
private static String userName;
// setUserName不可由static修饰
@Value("${self.user.name}")
private void setUserName(String userName) {
userName = userName;
}
public static String getUserName() {
return userName;
}
}
其中,使用@Value为静态变量userName赋值。对于静态属性 userName,我们直接使用@Value注解是不生效的,但是可以将@Value("${self.user.name}")注解添加到非静态setter方法 setAddress(String userName)上面,使得在参数注入的时候,将 Apollo 配置中心或者yaml配置文件中配置的值传递给静态属性userName,然后通过静态方法getUserName()获取静态属性的值。
测试用例
@RestController
@RequestMapping("/test")
public class Test {
@GetMapping("/test1")
public String test1() {
readVale();
return "hello world!";
}
private static void readVale() {
System.out.println(ReadApolloConfig.getUserName());
}
}
结束语
文章到这里就结束了,看完之后你有什么想法想要跟大家分享呢?评论区在等着你!
人生犹如跑长跑,当中会有一段很困难的时期,如果放弃就输了整个比赛,但如果锲而不舍,就有赢的希望。对于大多数平凡如你我的人而言,没有什么捷径,谁能坚持到最后,谁就笑得更灿烂。
Spring注解之@Value基于Apollo或者YAML文件为静态变量赋值的更多相关文章
- Spring/Spring boot中静态变量赋值
情形1:静态变量为自动注入的对象 解决方案:设置两个变量,非静态变量使用@resource注入Bean,然后使用@PostConstruct在Spring初始化Bean成功后为静态变量赋值 @Comp ...
- SpringBoot自定义注解@YamlPropertySource加载yml或者yaml文件(扩展了@PropertySource)
1:概述 SpringBoot的@PropertySource注解只支持加载 properties结尾的文件.当使用@ConfigurationProperties 注解配合@EnableConfig ...
- spring 注解 之 AOP基于@Aspect的AOP配置
Spring AOP面向切面编程,可以用来配置事务.做日志.权限验证.在用户请求时做一些处理等等.用@Aspect做一个切面,就可以直接实现. 1.首先定义一个切面类,加上@Component @A ...
- 浅尝Spring注解开发_自定义注册组件、属性赋值、自动装配
Spring注解开发 浅尝Spring注解开发,基于Spring 4.3.12 包含自定义扫描组件.自定义导入组件.手动注册组件.自动注入方法和参数.使用Spring容器底层组件等 配置 @Confi ...
- 浅尝Spring注解开发_Bean生命周期及执行过程
Spring注解开发 浅尝Spring注解开发,基于Spring 4.3.12 包含Bean生命周期.自定义初始化方法.Debug BeanPostProcessor执行过程及在Spring底层中的应 ...
- 浅尝Spring注解开发_AOP原理及完整过程分析(源码)
浅尝Spring注解开发_AOP原理及完整过程分析(源码) 浅尝Spring注解开发,基于Spring 4.3.12 分析AOP执行过程及源码,包含AOP注解使用.AOP原理.分析Annotation ...
- Spring注解开发_Spring容器创建概述
浅尝Spring注解开发_Spring容器创建概述 浅尝Spring注解开发,基于Spring 4.3.12 概述Spring容器创建的过程,包括12个方法的执行 浅尝Spring注解开发_自定义注册 ...
- 浅尝Spring注解开发_Servlet3.0与SpringMVC
浅尝Spring注解开发_Servlet 3.0 与 SpringMVC 浅尝Spring注解开发,基于Spring 4.3.12 Servlet3.0新增了注解支持.异步处理,可以省去web.xml ...
- Spring 注解无效 空指针异常
对于Java开发,现在Spring已成为一种生态,使用Spring成为一种享受,Spring的使用让开发变得更加便捷. 而Spring好用归好用,若不清楚里面的工作原理,使用的时候难免会踩到一些坑. ...
- @Value注解无法为static 变量赋值
使用@Value给静态变量赋值时,出现空指针异常.经了解Spring 不允许/不支持把值注入到静态变量中.所以需要另一种方式为该变量赋值. 需要注意set方法也不要加static修饰符!
随机推荐
- NCS开发学习笔记-基础篇-第 1 课 – nRF Connect SDK 简介
第 1 课 – nRF Connect SDK 简介 目标 了解 nRF Connect SDK 的结构和内容 在内部,nRF Connect SDK 代码分为四个主要存储库: nrf – 应用程序. ...
- Navicat 如何将表恢复默认状态下
场景: 测试一套流程后,造测试数据非常麻烦的情况下,如何通过更改数据库为默认情况即初始表数据 案例: 比如表原有结构如下图(一) 修改后数据如下图(二): 需求:将图二数据恢复到图一内容下 操作思想: ...
- 查询Oracle正在执行的sql语句及执行该语句的用户
SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, paddr, sql_text 正在执行的SQL, b.m ...
- [源码系列:手写spring] IOC第十四节:容器事件和事件监听器
代码分支 https://github.com/yihuiaa/little-spring/tree/event-and-event-listenerhttps://github.com/yihuia ...
- C#元数据的概念,以及一个使用了lambda表达式的简单例子
先看一个例子 假设你写了一个 C# 类库 MathUtils.dll: public class Calculator { public int Add(int a, int b) => a + ...
- FireDAC开发DataSnap应用系统【3】-使用TFDJSONDatasets的CRUD功能
类别 说明 TFDJSONDeltas 包含异动的delta的类别.客户端存放deltade对象 TFDJSONDeltasWriter 把deltas写入TFDJSONDeltas TFDJSOND ...
- 《HarmonyOS Next开发进阶:打造功能完备的Todo应用华章》
章节 6:日期选择器与日期处理 目标 学习如何使用DatePicker组件. 理解日期格式化和日期计算. 内容 日期选择器基础 使用DatePicker组件. 处理日期选择事件. 日期格式化 格式化日 ...
- 关于CH182LED配置的说明
CH182的LED配置有两种模式: 传统LED功能 该功能可通过页7寄存器19控制bit 3-5控制 使用时可将页7寄存器19 bit3 置0 通过bit4-5实现不同模式,默认情况下bit3为0,b ...
- 请求参数的绑定(获取请求数据)、请求参数是一个POJO
一. @Controller @RequestMapping("/parem") public class ParamController { /** * springmvc接受请 ...
- WPF静态资源StaticResource和动态资源DynamicResource有什么区别,x:Static又是什么意思?
什么叫WPF的资源(Resource) 资源是保存在可执行文件中的一种不可执行数据.WPF中资源用ResourceDictionary类表示,这个类就是一个字典,字典的key和value都是objec ...