spring获取环境变量

简介: spring获取环境变量

需求


想分辨一下test/prod环境,然后根据环境做一下逻辑处理,比如为测试环境添加了一个通用密码。。。当然这样不太好,不要学我。


实现


一开始我是想通过application.yml文件里面设置的


spring:
  profiles:
      active: local


来判断的,后来代码写了个bug误以为没起效,就又研究了一下其他方式,当然这种方式实际上是没问题的。现在把这几种方式都记录一下,以供参考。


读取配置文件方式


首先配置文件内容如下:


spring:
  profiles:
      active: local


读取方式直接读就可以:


    @Value(value = "${spring.profiles.active}")
    private String env;


下面代码里就可以直接用了。


Environment方式


一开始我想自己把这个对象new出来,后来发现自己这样做完全忽视了spring的ioc容器,明明直接注入就好了呀,代码如下:


    @Autowired
    private Environment environment;
    public void justTest() {
        String profile=org.springframework.util.StringUtils.arrayToCommaDelimitedString( environment.getActiveProfiles());
        System.out.println("system spring profiles active is "+profile);
    }


系统变量方式


    public void justTest() {
        String profile=System.getenv().getOrDefault("SPRING_PROFILES_ACTIVE","local");
        System.out.println("system spring profiles active is "+profile);
    }


我这里get的是SPRING_PROFILES_ACTIVE,是因为我们是通过docker方式设置的profiles,变量名是这个,docker启动命令如下


docker run --privileged=true  --cap-add=SYS_PTRACE -it -d -e "SPRING_PROFILES_ACTIVE=test" -v /opt/logs:/logs --name atest -p 8989:8080 registry.cn-beijing.aliyuncs.com/test-web:1.0.0
目录
相关文章
|
1月前
|
Java 数据库 数据安全/隐私保护
Spring 微服务提示:使用环境变量抽象数据库主机名
Spring 微服务提示:使用环境变量抽象数据库主机名
40 1
|
Java Spring 容器
深入理解Spring IOC之扩展篇(八)、环境变量的校验
深入理解Spring IOC之扩展篇(八)、环境变量的校验
98 0
|
Java Spring NoSQL
Spring Boot 环境变量读取 和 属性对象的绑定
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/50548009 凡是被Spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量。
2381 0
|
Java 程序员 网络安全
spring4.1.8扩展实战之一:自定义环境变量验证
在之前学习spring环境初始化源码的过程中,见到有些地方能通过子类来实现自定义扩展,从本章开始,我们来逐个实践这些扩展,除了加深对spring的理解,有的扩展也能解决一些通用的问题
159 0
spring4.1.8扩展实战之一:自定义环境变量验证
|
SQL Cloud Native Java
【方向盘】Spring Boot 2.5.0正式发布,环境变量可指定前缀的功能很赞
【方向盘】Spring Boot 2.5.0正式发布,环境变量可指定前缀的功能很赞
 【方向盘】Spring Boot 2.5.0正式发布,环境变量可指定前缀的功能很赞
|
Java Docker Spring
spring 代码中,解决docker环境变量传递问题
1,docker变量 在docker中定义变量,使用echo $Value 能直接在命令行中显示, 这个使用spring可以直接注入到代码当中。 php中有方便的代码直接获得环境变量,但是java用起来就麻烦点。 直接使用spring的value就行了。 2,代码 比如一个spring的用户登录action。 里面用docker配置了一个默认的admin登录
1789 0
|
Java Docker 容器
使用junit&spring修改系统的环境变量,解决docker程序测试问题
1,修改系统环境变量 首先环境变量在java运行的时候是修改不了的。 已经设置成只读了虽然方法都能调用。 这个有啥用呢?因为docker开放的应用程序的环境变量都是这样设置的。 docker在启动的时候设置了环境变量,然后应用程序就可以直接调用了。 调用的方法java就是通过 System.getenv()获得的。 有spring的程序,直接使用${jdbc.u
1463 0
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
1月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
161 2
|
6天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
18 2
 SpringBoot入门(7)- 配置热部署devtools工具