首页 > 其他分享 >Spring注解之@Value基于Apollo或者YAML文件为静态变量赋值

Spring注解之@Value基于Apollo或者YAML文件为静态变量赋值

时间:2022-10-29 17:36:57浏览次数:85  
标签:userName 静态 Spring Value YAML 注解 Apollo 赋值

摘要: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());
    }

}

结束语

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

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

标签:userName,静态,Spring,Value,YAML,注解,Apollo,赋值
From: https://www.cnblogs.com/east7/p/16839178.html

相关文章

  • 1067 - Invalid default value for 'CREATE_TIME'
      1、进入数据库执行:showvariableslike'sql_mode';  2、永久修改,编辑mysql的配配置文件my.cnf在[mysqld]下面添加如下列:sql_mode=ONLY_FULL_GROUP_BY,STRICT......
  • Springboot + bootstrap 实现 增删改查
    SpringBoot+bootstrap 配合mysql实现增删改查功能创建项目打开idea工具----  点击File---new---Project创建springBoot项目工程,版本统一:我使......
  • SpringBoot推送微信测试公众号信息
    1、登陆微信公众平台测试号2、扫码关注3、新建模版参数需以{{开头,以.DATA}}结尾,ex:{{msg.DATA}},代码里面替换就可以了templateMessage.addData(newWxMpTemplateDat......
  • 安装Redis并在springboot项目中使用redis
    一、下载redis1.1官网下载 1.2将其添加到服务上,并使其开机自启动 二、下载redis可视化工具(下不下都行) 三、将redis集成到我们的springboot项目中3.1首先是引......
  • springcloudalibaba入门
    1、父工程pom文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance......
  • Spring基础使用六
    Spring基础使用六基于注解的AOP使用AspectJ注解层具体实现层:动态代理:有接口情况cglib:没接口情况动态代理:JDK原生的实现方式,需要被代理的目标类必须实现接口。因......
  • SpringMVC中文乱码
    <!--直接在web.xml中配置SpringMVC提供的过滤器注意url-pattern为 /*,过滤所有请求(包括jsp);如果设置为 /,访问jsp就不会经过过滤器了!--><filter><fi......
  • spring注解--切面(AOP)相关注解
    切面(AOP)相关注解Spring支持AspectJ的注解式切面编程。@Aspect声明一个切面(类上)使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。@After在......
  • spring注解--@Bean的属性支持
    @Bean的属性支持@Scope设置Spring容器如何新建Bean实例(方法上,得有@Bean)其设置类型包括:·Singleton(单例,一个Spring容器中只有一个bean实例,默认模式),·Protetype(每......
  • SpringSecurity使用入门
    1、引入依赖spring-boot版本2.7.3,如未特殊说明版本默认使用此版本<dependency><groupId>org.springframework.boot</groupId><artifact......