文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot中使用Profile的几种方式

2024-11-28 15:53

关注

当然由于maven默认是不下载snapshot包的,因此我们要配置让它下载,这里分为全局配置和项目级别配置。

项目配置

在pom文件中添加如下内容:


    
        nexus
        
        http://localhost:18081/repository/maven-public/
        
            true
            always
        
        
         
            true
            always
        
    
 

全局配置

在maven的settings.xml中新增配置,如果不配置profile,只配置mirror,是下载不了snapshot包的



  bv-profile
   
    
        nexus
        http://localhost:18081/repository/maven-public/
        
            true
            always
        
        
            true
            always
        
    
  

回到正题,如何使用maven的profile呢?

maven profile

同样的首先在pom.xml中新增配置:


    
        dev
        
            true
        
        
            dev
            2.0.0-SNAPSHOT
        
    
    
        prod
        
            prod
            1.9.0
        
        
    



    
        
        src/main/resources
        
            db/**
            static/**
            mapper/**
            
            bootstrap.yml
            bootstrap-${spring.profiles.active}.yml
            logback.xml
        
        true
    

比如这里我就设定了两个profile(dev, prod), 然后他们引用某个包的版本不一样,然后应用包的时候这样使用就行了


 
        com.bvpro
        bvpro-common-api
        ${bvpro.api.version}
    

然后项目中的bootstrap.yml文件中修改如下

# Spring
spring: 
  profiles:
    # 环境配置
    active: @spring.profiles.active@

然后当我们打包的时候 mvn clean package -P dev 就可以打包dev环境的配置,同时 @spring.profiles.active@ 会被替换成dev。

当然如果你使用idea的时候就更加简单了,只需要勾选profile=dev就行了。

docker中使用

我们知道在使用dockerfile的时候也可以指定环境变量,然后启动的时候就可以根据环境变量来启动了,比如这样子:

FROM openjdk:8-jre-alpine
ENV env_java_debug_enabled=false
EXPOSE 8080
WORKDIR /app
ADD target/smcp-web.jar /app/target/smcp-web.jar
ADD run.sh /app
ENTRYPOINT ["java","-Dspring.profiles.active=test", "-jar","target/smcp-web.jar"]

然后run.sh这样写:

可以看到我们在dockerfile中使用了ENV来指定我们要启动什么环境,但是这种方式太僵硬了, 因为相当于把启动什么环境给写死了,后面想要切换到其他环境的时候还要去修改dockerfile,这种方式看上去不太行呀!

SPRING_PROFILES_ACTIVE

好在springboot项目启动的时候会去读这样的一个特殊环境变量 SPRING_PROFILES_ACTIVE, 如果环境变量中配置了这个值,那么会根据这个值找到对应的profile, 然后启动对应的环境,所以我么可以在启动的时候指定这个环境变量就行了, 所以可以这样子。

FROM openjdk:8-jre-alpine
ENV spring_profiles_active=dev
ENV env_java_debug_enabled=false
EXPOSE 8080
WORKDIR /app
ADD target/smcp-web.jar /app/target/smcp-web.jar
ADD run.sh /app
ENTRYPOINT ["java", "-jar","target/smcp-web.jar"]

这里预设了spring_profiles_active的值是dev,当启动的时候你可以更改这个值。

如果你使用docker-compose来启动,那么也可以在docker-compose文件中配置environment,比如:

environment:
   - SPRING_PROFILES_ACTIVE=prod

这就是指定profile的各种方式了,使用这种方式我们可以更加精确的控制我们需要启动的环境,并且还是最少的修改。

来源:think123内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯