栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Profiles的几个小知识

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Profiles的几个小知识

1、我们在项目中的 application.properties 文件里直接进行配置即可

spring.profiles.active=dev

2、通过硬编码实现 WebApplicationInitializer 接口,配置 ServletContext 来激活配置

@Configuration
public class MyWebApplicationInitializer 
  implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
 
        servletContext.setInitParameter(
          "spring.profiles.active", "dev");
    }
}

3、直接在 ConfigurableEnvironment 中实现设置,使用 spring boot 的朋友应该都知道,系统所有的配置项都是来自于 ConfigurableEnvironment 。

@Autowired
private ConfigurableEnvironment env;
...
env.setActiveProfiles("dev");

4、命令行JVM启动参数

-Dspring.profiles.active=dev

5、通过 export 环境变量来实现

export spring_profiles_active=dev

嗯, 学会了这几种方法,你已经可以在绝大部分场景下,游刃有余地使用 profile 了。

还有个问题,既然这样配置的话,那我项目里有多个profile, 万一我手抖,没有用你说的这几种配置好呢?那会怎么样?

这个你放心,spring boot 有兜底方法,你想啊,你在一些项目没有用到 profile 的时候,spring boot 是怎么启动的呢?spring boot 项目会自动使用默认配置

spring.profiles.default=none

也就是说,spring boot 启动了,但是没有加载任何被@Profile 等标记的配置类。只会加载没有被标记的配置类。

我们项目里,有很多类似 @Profile("db") @Profile("mysql") 之类的,那像这种多个的怎么使用的?

我们项目中,不同的模块都分开配置了, 我给你举个例子怎么使用的。

-Dspring.profiles.active=dev,db,mysql

就像这样,直接逗号分割,拼接上去就行了。

那这样好像比较麻烦啊,万一搞漏掉了就给自己挖坑了。

这就是要仔细了,以前一直要靠自己的。现在就不会有这个问题了,spring boot 团队也意识到这个问题了,在 Spring boot 2.4 开始已经支持分组了。

spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq

我们平时启动的时候只要指定 spring.profiles.active=production 就行了, prodb 和 prodmq 同样就能成功配置进来。Spring Profiles 的相关内容差不多都讲完了,你还有什么疑问吗?

总结

本文讲述了 Spring Profiles 的配置使用,和如果在启动的时候,选择特定的 profile 。也讲述了一些使用过程中的一些小技巧,希望对你有帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/979143.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号