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;
    
    @Value("${self.user.name}")
    public 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());
    }

}

结束语

  文章到这里就结束了,看完之后你有什么想法想要跟大家分享呢?评论区在等着你!

  人生犹如跑长跑,当中会有一段很困难的时期,如果放弃就输了整个比赛,但如果锲而不舍,就有赢的希望。对于大多数平凡如你我的人而言,没有什么捷径,谁能坚持到最后,谁就笑得更灿烂。

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/east7/p/16839178.html

springboot 项目普通类调用 mapper 接口使用 mybatisplus 报错:空指针异常(nullpointerexception)_整合侠-编程思维

Springboot 项目普通类调用 Mapper 接口使用 MybatisPlus 报错:空指针异常(NullPointerException) 报错   开发时,在普通类调用 Mapper 接口使用 MabatisPlus 功能时会报出【空指针异常( NullPointerException )】 分析   普通类

一文搞懂spring-aop原理_小学生ii-编程思维

https://cloud.tencent.com/developer/article/1664477?from=article.detail.1449134 一、RPC的作用 屏蔽远程调用跟本地调用的区别,让我们感觉就是调用项目内的方法。 隐藏底层网络通信的复杂性,让我们更专注于业务逻辑。 二、完整的RPC涉及到

2流高手速成记(之六):从springboot到springcloudalibaba_14号程序员-编程思维

咱们接上回 2流高手速成记(之五):Springboot整合Shiro实现安全管理 - 14号程序员 - 博客园 (cnblogs.com) 身边常有朋友说:小项目用PHP、大项目用Java(这里绝无贬低PHP技术栈之意),曾经有兴趣对比过两种语言的技术栈 PHP有TP、Laravel这样成熟的企业级框架,Larave

spring boot 项目自定义 banner_luis林威-编程思维

前言 我们在启动 Spring Boot 项目时,控制台会打印出 Spring Boot 专属的标语,也称 banner(横幅标语/广告),效果如下: 实际上,上面这个 banner,我们可以自定义,而很多公司也有使用自己的 banner 的。 下面介绍在 Spring Boot 项目中使用自定义 banner 的两

spring boot 应用的热部署配置_luis林威-编程思维

前言 所谓热部署,简单来说,就是代码修改后不需重启项目就可自动加载出新的内容。 注意:热部署在 debug 调试模式下才生效! IDEA 配置 在 IDE(IDEA)中开启相关项目自动构建选项 开启编译器设置中修改后自动编译的选项(下图是 IDEA 2021版本,其他版本可能在其他位置) Spring

spring bean是什么_楼兰胡杨-编程思维

  本文介绍一个基本概念—— Spring Bean是什么。   把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了。   Spring 官方文档对 bean 的定义如下: In Spring, the objects that form the backbon

spring 动态绑定多实现类实例综述_楼兰胡杨-编程思维

  摘要: 由于业务场景复杂,一个算法需要开发行为变化多端的多个实现类,然后在系统运行时根据不同场景装载不同的类实例。为了使应用程序具有更好的灵活性、可扩展性和代码的可重用性,在借鉴前人处理方法的基础上,通过资料的分析,探索建立了一套 Spring Boot 项目动态绑定算法相关实现类实例并调用其函数的策略,主要涉及的

spring注解之自定义注解入门_楼兰胡杨-编程思维

目录前言注解是什么自定义注解元注解@Target@Retention@Documented@Inherited结束语Reference 前言   在业务开发过程中,Spring 框架自带的注解并非总能满足形形色色的业务需求,所以我们需要自定义注解来满足特定需求。在定义自己的注解之前,我们先探讨自定义注解的入门知识——S