自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SpringBoot中使用Profile的幾種方式

開發(fā) 前端
我們在dockerfile中使用了ENV來指定我們要啟動什么環(huán)境,但是這種方式太僵硬了, 因為相當于把啟動什么環(huán)境給寫死了,后面想要切換到其他環(huán)境的時候還要去修改dockerfile,這種方式看上去不太行呀!

最近項目中進行倉庫拆分了之后,因為引入了公共包,所以就存在可能有snapshot版本以及release版本問題,比如我想要在dev環(huán)境的時候import snapshot版本,prod環(huán)境的時候又使用release版本,為了不頻繁修改pom.xml文件,因此決定使用POM的profile來解決這個問題。

當然由于maven默認是不下載snapshot包的,因此我們要配置讓它下載,這里分為全局配置和項目級別配置。

項目配置

在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>
            <!-- 選擇要打包的配置文件和日志,當然也可以不加打包所有配置文件,然后由具體服務(wù)器來選擇使用哪個 -->
            <include>bootstrap.yml</include>
            <include>bootstrap-${spring.profiles.active}.yml</include>
            <include>logback.xml</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>

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

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

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

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

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

當然如果你使用idea的時候就更加簡單了,只需要勾選profile=dev就行了。

docker中使用

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

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來指定我們要啟動什么環(huán)境,但是這種方式太僵硬了, 因為相當于把啟動什么環(huán)境給寫死了,后面想要切換到其他環(huán)境的時候還要去修改dockerfile,這種方式看上去不太行呀!

SPRING_PROFILES_ACTIVE

好在springboot項目啟動的時候會去讀這樣的一個特殊環(huán)境變量 SPRING_PROFILES_ACTIVE, 如果環(huán)境變量中配置了這個值,那么會根據(jù)這個值找到對應的profile, 然后啟動對應的環(huán)境,所以我么可以在啟動的時候指定這個環(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"]

這里預設(shè)了spring_profiles_active的值是dev,當啟動的時候你可以更改這個值。

如果你使用docker-compose來啟動,那么也可以在docker-compose文件中配置environment,比如:

environment:
   - SPRING_PROFILES_ACTIVE=prod

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

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

2024-10-18 08:53:49

SpringMybatis微服務(wù)

2018-03-14 13:57:19

云計算

2018-03-09 12:00:11

云計算公共云企業(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ā)語言

2018-10-10 10:23:53

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

2022-03-31 09:13:49

Cache緩存高并發(fā)

2009-07-28 09:45:34

Webpart部署方式使用ASP.NET

2023-08-03 08:06:50

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-08-02 11:13:28

人工智能機器學習技術(shù)

2021-10-07 20:36:45

Redis集群場景

2020-12-28 08:29:47

Vuecss框架

2024-05-10 07:44:23

C#進程程序
點贊
收藏

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