成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot中使用Profile的幾種方式

開發(fā) 前端
我們?cè)赿ockerfile中使用了ENV來(lái)指定我們要啟動(dòng)什么環(huán)境,但是這種方式太僵硬了, 因?yàn)橄喈?dāng)于把啟動(dòng)什么環(huán)境給寫死了,后面想要切換到其他環(huán)境的時(shí)候還要去修改dockerfile,這種方式看上去不太行呀!

最近項(xiàng)目中進(jìn)行倉(cāng)庫(kù)拆分了之后,因?yàn)橐肓斯舶?所以就存在可能有snapshot版本以及release版本問題,比如我想要在dev環(huán)境的時(shí)候import snapshot版本,prod環(huán)境的時(shí)候又使用release版本,為了不頻繁修改pom.xml文件,因此決定使用POM的profile來(lái)解決這個(gè)問題。

當(dāng)然由于maven默認(rèn)是不下載snapshot包的,因此我們要配置讓它下載,這里分為全局配置和項(xiàng)目級(jí)別配置。

項(xiàng)目配置

在pom文件中添加如下內(nèi)容:

<repositories>
    <repository>
        <id>nexus</id>
        <!--修改成自己私服地址-->
        <url>http://localhost:18081/repository/maven-public/</url>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </releases>
        <snapshots>
         <!--主要是這里-->
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
 </repositories>

全局配置

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

<profiles>
<profile>
  <id>bv-profile</id>
   <repositories>
    <repository>
        <id>nexus</id>
        <url>http://localhost:18081/repository/maven-public/</url>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
  </repositories>
</profile>
</profiles>

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

maven profile

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

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <spring.profiles.active>dev</spring.profiles.active>
            <bvpro.api.version>2.0.0-SNAPSHOT</bvpro.api.version>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <spring.profiles.active>prod</spring.profiles.active>
            <bvpro.api.version>1.9.0</bvpro.api.version>
        </properties>
        </properties>
    </profile>
</profiles>

<resources>
    <resource>
        <!-- 指定配置文件所在的resource目錄 -->
        <directory>src/main/resources</directory>
        <includes>
            <include>db/**</include>
            <include>static/**</include>
            <include>mapper/**</include>
            <!-- 選擇要打包的配置文件和日志,當(dāng)然也可以不加打包所有配置文件,然后由具體服務(wù)器來(lái)選擇使用哪個(gè) -->
            <include>bootstrap.yml</include>
            <include>bootstrap-${spring.profiles.active}.yml</include>
            <include>logback.xml</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>

比如這里我就設(shè)定了兩個(gè)profile(dev, prod), 然后他們引用某個(gè)包的版本不一樣,然后應(yīng)用包的時(shí)候這樣使用就行了

<dependencies>
 <dependency>
        <groupId>com.bvpro</groupId>
        <artifactId>bvpro-common-api</artifactId>
        <version>${bvpro.api.version}</version>
    </dependency>
</dependencies>

然后項(xiàng)目中的bootstrap.yml文件中修改如下

# Spring
spring: 
  profiles:
    # 環(huán)境配置
    active: @spring.profiles.active@

然后當(dāng)我們打包的時(shí)候 mvn clean package -P dev 就可以打包dev環(huán)境的配置,同時(shí) @spring.profiles.active@ 會(huì)被替換成dev。

當(dāng)然如果你使用idea的時(shí)候就更加簡(jiǎn)單了,只需要勾選profile=dev就行了。

docker中使用

我們知道在使用dockerfile的時(shí)候也可以指定環(huán)境變量,然后啟動(dòng)的時(shí)候就可以根據(jù)環(huán)境變量來(lái)啟動(dòng)了,比如這樣子:

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這樣寫:

可以看到我們?cè)赿ockerfile中使用了ENV來(lái)指定我們要啟動(dòng)什么環(huán)境,但是這種方式太僵硬了, 因?yàn)橄喈?dāng)于把啟動(dòng)什么環(huán)境給寫死了,后面想要切換到其他環(huán)境的時(shí)候還要去修改dockerfile,這種方式看上去不太行呀!

SPRING_PROFILES_ACTIVE

好在springboot項(xiàng)目啟動(dòng)的時(shí)候會(huì)去讀這樣的一個(gè)特殊環(huán)境變量 SPRING_PROFILES_ACTIVE, 如果環(huán)境變量中配置了這個(gè)值,那么會(huì)根據(jù)這個(gè)值找到對(duì)應(yīng)的profile, 然后啟動(dòng)對(duì)應(yīng)的環(huán)境,所以我么可以在啟動(dòng)的時(shí)候指定這個(gè)環(huán)境變量就行了, 所以可以這樣子。

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"]

這里預(yù)設(shè)了spring_profiles_active的值是dev,當(dāng)啟動(dòng)的時(shí)候你可以更改這個(gè)值。

如果你使用docker-compose來(lái)啟動(dòng),那么也可以在docker-compose文件中配置environment,比如:

environment:
   - SPRING_PROFILES_ACTIVE=prod

這就是指定profile的各種方式了,使用這種方式我們可以更加精確的控制我們需要啟動(dòng)的環(huán)境,并且還是最少的修改。

責(zé)任編輯:武曉燕 來(lái)源: think123
相關(guān)推薦

2024-10-18 08:53:49

SpringMybatis微服務(wù)

2018-03-14 13:57:19

云計(jì)算

2018-03-09 12:00:11

云計(jì)算公共云企業(yè)

2022-02-17 08:20:17

Spring執(zhí)行代碼SpringBoot

2009-07-30 12:19:32

ASP.NET中使用A

2021-05-07 16:19:36

異步編程Java線程

2010-09-25 14:48:55

SQL連接

2021-01-19 11:56:19

Python開發(fā)語(yǔ)言

2018-10-10 10:23:53

數(shù)據(jù)庫(kù)RedisNoSQL

2022-03-31 09:13:49

Cache緩存高并發(fā)

2009-07-28 09:45:34

Webpart部署方式使用ASP.NET

2023-09-07 13:21:00

Linux軟件

2023-02-08 08:43:55

前端繼承原型

2021-06-16 07:02:22

Python方式郵件

2010-11-24 09:56:20

mysql拷貝表

2021-10-07 20:36:45

Redis集群場(chǎng)景

2021-08-02 11:13:28

人工智能機(jī)器學(xué)習(xí)技術(shù)

2023-08-03 08:06:50

2020-12-28 08:29:47

Vuecss框架

2024-05-10 07:44:23

C#進(jìn)程程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 午夜在线视频一区二区三区 | 超碰婷婷| 国产在线一区二 | 日韩av一区二区在线 | 精品一区二区在线视频 | 在线观看www | 黄片毛片 | 人人爽日日躁夜夜躁尤物 | 国产高清在线精品 | 精品久久国产 | 美女久久| 久久国产精彩视频 | 激情欧美日韩一区二区 | 亚洲综合大片69999 | 一区二区视频在线 | 国产在线资源 | 欧产日产国产精品视频 | 91精品国产综合久久婷婷香蕉 | 国产精品日本一区二区在线播放 | 又爽又黄axxx片免费观看 | 国产草草视频 | 久久精品视频网站 | 综合久久亚洲 | 国产一区二区免费 | 国产高清精品一区二区三区 | 妹子干综合 | 欧美一级在线观看 | 99欧美精品 | 欧美极品一区二区 | 国产精品久久久久久久久久久新郎 | 男人久久天堂 | 国内久久 | 日韩在线免费 | 欧美日韩在线一区 | 亚洲精品亚洲人成人网 | 逼逼视频 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 在线观看亚洲 | 黄色免费在线观看 | 欧美日韩久久精品 | 99国内精品久久久久久久 |