Spring Boot 教程

Spring Boot 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/spring_boot-get-current-env-info.html

spring boot 在程序代码层面获取当前环境信息的方法

Spring Boot 笔记 Spring Boot 笔记


基于 Spring 框架或 Spring Boot 的项目中,需要根据当前环境的不同在代码上实现不同的逻辑,那如何获取当前环境信息。

实现方式

spring 项目一般通过启动参数中,指定 spring.profiles.active 为对应的环境信息,那代码中,获取 spring.profiles.active 即可知晓当前所处的环境。

spring 在容器中实例化一个 Environment 对象,该对象含有包含 spring.profiles.active 等的环境信息,项目中可以创建一个环境信息的管理器,然后在使用处调用管理类的封装方法即可。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

/**
 * spring 环境信息管理器
 **/
@Component
public class SpringEnvironmentManager {

    @Autowired
    private Environment env;

    public Environment getEnv() {
        return env;
    }
}

如下,在具体使用示例: 

        Environment environment = springEnvironmentManager.getEnv();
        String[] activeProfiles = environment.getActiveProfiles();
        if (ArrayUtils.isNotEmpty(activeProfiles)) {
            if ("prod".equals(activeProfiles[0])) {
                // todo
            } else if ("staging".equals(activeProfiles[0])) {
                // todo
            } else if ("test".equals(activeProfiles[0])) {
                // todo
            } else if ("dev".equals(activeProfiles[0])) {
                // todo
            } else {
                // todo
            }
        }

还有另一种方式是直接注入 spring.profiles.active 信息,具体示例如下:

    @Value("${spring.profiles.active:Unknown}")
    private String profiles;

这里设置了一个默认值 Unknown,是因为如果程序没有设置 spring.profiles.active 的话,会抛出 IllegalArgumentException

基于 spring 的框架中,经常会需要通过代码层面判断当前所处的环境信息(如 spring.profiles.active 等)来区分某种 ...
这里收集了 Spring Boot 使用中常见的问题与解决方案等内容。 ...
spring boot 自带多个 log 实现,其中也包括 logback,往往开发中,开发者需要根据环境,对日志有不一样的配置操作,如不希 ...
currentTimeMillis()这是获取当前时间戳的一种简单方式,返回自1970年1月1日以来的毫秒数。ZonedDateTime和时 ...
laravel admin 如何获取当前登陆用户信息,用于记录操作者 id? ...