欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何使用spring.profiles.active來(lái)分區(qū)配置

這篇文章將為大家詳細(xì)講解有關(guān)如何使用spring.profiles.active來(lái)分區(qū)配置,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)白山,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220

很多時(shí)候,我們項(xiàng)目在開(kāi)發(fā)環(huán)境和生成環(huán)境的環(huán)境配置是不一樣的,例如,數(shù)據(jù)庫(kù)配置,在開(kāi)發(fā)的時(shí)候,我們一般用測(cè)試數(shù)據(jù)庫(kù),而在生產(chǎn)環(huán)境的時(shí)候,我們是用正式的數(shù)據(jù),這時(shí)候,我們可以利用profile在不同的環(huán)境下配置用不同的配置文件或者不同的配置

spring boot允許你通過(guò)命名約定按照一定的格式(application-{profile}.properties)來(lái)定義多個(gè)配置文件,然后通過(guò)在application.properyies通過(guò)spring.profiles.active來(lái)具體激活一個(gè)或者多個(gè)配置文件,如果沒(méi)有沒(méi)有指定任何profile的配置文件的話,spring boot默認(rèn)會(huì)啟動(dòng)application-default.properties。

profile的配置文件可以按照application.properyies的放置位置一樣,放于以下四個(gè)位置,

1.當(dāng)前目錄的 “/config”的子目錄下
2.當(dāng)前目錄下
3.classpath根目錄的“/config”包下
4.classpath的根目錄下

在這里我們就定義倆個(gè)profile文件,application-cus1.properties和application-cus2.properties,并在倆個(gè)文件中都分別寫(xiě)上變量cusvar=cus1和cusvar=cus2

我們?cè)赼pplication.properyies也寫(xiě)上,并把profile切換到application-cus1.properties的配置文件

 cusvar=cus3
spring.profiles.active=cus1

可以通過(guò)這樣子來(lái)測(cè)試

@RestController
@RequestMapping("/task")
public class TaskController {

  @RequestMapping(value = {"/",""})
  public String hellTask(@Value("${cusvar}")String cusvar ){

    return "hello task !! myage is " + cusvar;
  }

}

在這里可以看到spring.profiles.active激活的profile不同,打印出來(lái)的結(jié)果也不一樣。

除了可以用profile的配置文件來(lái)分區(qū)配置我們的環(huán)境變量,在代碼里,我們還可以直接用@Profile注解來(lái)進(jìn)行配置,例如數(shù)據(jù)庫(kù)配置,這里我們先定義一個(gè)接口

 public interface DBConnector {
  public void configure();  
}

分別定義倆個(gè)實(shí)現(xiàn)類來(lái)實(shí)現(xiàn)它

 /**
 * 測(cè)試數(shù)據(jù)庫(kù)
 */
@Component
@Profile("testdb")
public class TestDBConnector implements DBConnector {

  @Override
  public void configure() {

    System.out.println("testdb");

  }
}

/**
 * 生產(chǎn)數(shù)據(jù)庫(kù)
 */
@Component
@Profile("devdb")
public class DevDBConnector implements DBConnector {

  @Override
  public void configure() {

    System.out.println("devdb");

  }

}

通過(guò)在配置文件激活具體使用哪個(gè)實(shí)現(xiàn)類

 spring.profiles.active=testdb

然后就可以這么用了

 @RestController
@RequestMapping("/task")
public class TaskController {

  @Autowired DBConnector connector ;

  @RequestMapping(value = {"/",""})
  public String hellTask(){

    connector.configure(); //最終打印testdb   
    return "hello task !! myage is " + myage;
  }

}

除了spring.profiles.active來(lái)激活一個(gè)或者多個(gè)profile之外,還可以用spring.profiles.include來(lái)疊加profile

spring.profiles: testdb
spring.profiles.include: proddb,prodmq

以上就是spring boot用profile的作用

通過(guò)命令行設(shè)置屬性值

相信使用過(guò)一段時(shí)間Spring Boot的用戶,一定知道這條命令:java -jar xxx.jar --server.port=8888,通過(guò)使用--server.port屬性來(lái)設(shè)置xxx.jar應(yīng)用的端口為8888。

在命令行運(yùn)行時(shí),連續(xù)的兩個(gè)減號(hào)--就是對(duì)application.properties中的屬性值進(jìn)行賦值的標(biāo)識(shí)。所以,java -jar xxx.jar --server.port=8888命令,等價(jià)于我們?cè)赼pplication.properties中添加屬性server.port=8888,該設(shè)置在樣例工程中可見(jiàn),讀者可通過(guò)刪除該值或使用命令行來(lái)設(shè)置該值來(lái)驗(yàn)證。

通過(guò)命令行來(lái)修改屬性值固然提供了不錯(cuò)的便利性,但是通過(guò)命令行就能更改應(yīng)用運(yùn)行的參數(shù),那豈不是很不安全?是的,所以Spring Boot也貼心的提供了屏蔽命令行訪問(wèn)屬性的設(shè)置,只需要這句設(shè)置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)。

多環(huán)境配置

以上都不是重點(diǎn),這才是重點(diǎn),這才是重點(diǎn),這才是重點(diǎn),重要的事情說(shuō)3遍。我們?cè)陂_(kāi)發(fā)Spring Boot應(yīng)用時(shí),通常同一套程序會(huì)被應(yīng)用和安裝到幾個(gè)不同的環(huán)境,比如:開(kāi)發(fā)、測(cè)試、生產(chǎn)等。其中每個(gè)環(huán)境的數(shù)據(jù)庫(kù)地址、服務(wù)器端口等等配置都會(huì)不同,如果在為不同環(huán)境打包時(shí)都要頻繁修改配置文件的話,那必將是個(gè)非常繁瑣且容易發(fā)生錯(cuò)誤的事。

對(duì)于多環(huán)境的配置,各種項(xiàng)目構(gòu)建工具或是框架的基本思路是一致的,通過(guò)配置多份不同環(huán)境的配置文件,再通過(guò)打包命令指定需要打包的內(nèi)容之后進(jìn)行區(qū)分打包,Spring Boot也不例外,或者說(shuō)更加簡(jiǎn)單。

在Spring Boot中多環(huán)境配置文件名需要滿足application-{profile}.properties的格式,其中{profile}對(duì)應(yīng)你的環(huán)境標(biāo)識(shí),比如:

  • application-dev.properties:開(kāi)發(fā)環(huán)境

  • application-test.properties:測(cè)試環(huán)境

  • application-prod.properties:生產(chǎn)環(huán)境

至于哪個(gè)具體的配置文件會(huì)被加載,需要在application.properties文件中通過(guò)spring.profiles.active屬性來(lái)設(shè)置,其值對(duì)應(yīng){profile}值。

 如:spring.profiles.active=test就會(huì)加載application-test.properties配置文件內(nèi)容

下面,以不同環(huán)境配置不同的服務(wù)端口為例,進(jìn)行樣例實(shí)驗(yàn)。

針對(duì)各環(huán)境新建不同的配置文件application-dev.properties、application-test.properties、application-prod.properties

在這三個(gè)文件均都設(shè)置不同的server.port屬性,如:dev環(huán)境設(shè)置為8080,test環(huán)境設(shè)置為9090,prod環(huán)境設(shè)置為80

application.properties中設(shè)置spring.profiles.active=dev,就是說(shuō)默認(rèn)以dev環(huán)境設(shè)置

測(cè)試不同配置的加載:

執(zhí)行java -jar xxx.jar,可以觀察到服務(wù)端口被設(shè)置為8080,也就是默認(rèn)的開(kāi)發(fā)環(huán)境(dev)

執(zhí)行java -jar xxx.jar --spring.profiles.active=test,可以觀察到服務(wù)端口被設(shè)置為9090,也就是測(cè)試環(huán)境的配置(test)

執(zhí)行java -jar xxx.jar --spring.profiles.active=prod,可以觀察到服務(wù)端口被設(shè)置為80,也就是生產(chǎn)環(huán)境的配置(prod)

按照上面的實(shí)驗(yàn),可以如下總結(jié)多環(huán)境的配置思路:

application.properties中配置通用內(nèi)容,并設(shè)置spring.profiles.active=dev,以開(kāi)發(fā)環(huán)境為默認(rèn)配置

application-{profile}.properties中配置各個(gè)環(huán)境不同的內(nèi)容

通過(guò)命令行方式去激活不同環(huán)境的配置。

多環(huán)境高級(jí)應(yīng)用

在某些情況下,應(yīng)用的某些業(yè)務(wù)邏輯可能需要有不同的實(shí)現(xiàn)。例如郵件服務(wù),假設(shè)EmailService中包含的send(String email)方法向指定地址發(fā)送電子郵件,但是我們僅僅希望在生產(chǎn)環(huán)境中才執(zhí)行真正發(fā)送郵件的代碼,而開(kāi)發(fā)環(huán)境里則不發(fā)送以免向用戶發(fā)送無(wú)意義的垃圾郵件。

我們可以借助Spring的注解@Profile實(shí)現(xiàn)這樣的功能,這樣需要定義兩個(gè)實(shí)現(xiàn)EmailService借口的類:

/**
 * 發(fā)送郵件接口.
 */
public interface EmailService {
  /**發(fā)送郵件*/
  publicvoid send();
}
發(fā)送郵件的具體實(shí)現(xiàn)(dev-開(kāi)發(fā)環(huán)境的代碼):
@Service
@Profile("dev") //開(kāi)發(fā)環(huán)境的時(shí)候.
public class DevEmailServiceImpl implements EmailService{
 
  @Override
  publicvoid send() {
    System.out.println("DevEmailServiceImpl.send().開(kāi)發(fā)環(huán)境不執(zhí)行郵件的發(fā)送.");
  }
}

發(fā)送郵件的具體實(shí)現(xiàn)(prod-生產(chǎn)環(huán)境的代碼):

 @Service
@Profile("prod") //生產(chǎn)環(huán)境.
public class ProdEmailServiceImpl2 implements EmailService{
  
  @Override
  publicvoid send() {
    System.out.println("DevEmailServiceImpl.send().生產(chǎn)環(huán)境執(zhí)行郵件的發(fā)送.");
    //具體的郵件發(fā)送代碼.
    //mail.send();
  }
}

@Profile("dev")表明只有Spring定義的Profile為dev時(shí)才會(huì)實(shí)例化DevEmailService這個(gè)類。那么如何設(shè)置Profile呢?

在配置文件中指定

在application.properties中加入:

spring.profiles.active=dev

通過(guò)命令行參數(shù)

java -jar app.jar --spring.profiles.active=dev

關(guān)于“如何使用spring.profiles.active來(lái)分區(qū)配置”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

新聞標(biāo)題:如何使用spring.profiles.active來(lái)分區(qū)配置
文章網(wǎng)址:http://aaarwkj.com/article40/pdhheo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、App設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站內(nèi)鏈、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
国产精品无卡无在线播放| 国产一区二区传媒视频| 亚洲日本高清一二三区| 自拍一区日韩二区欧美三区| 国产精品一区2区3区| 中国的性生活黄片免费观看| 国产97成人亚洲综合在线| 国产大片在线观看一区二区| av国产剧情在线观看| 国产成人自拍视频网站| 一区二区三区国产不卡| 青青草原这里只有精品| 日韩欧美亚洲一区二区| 在线看日本一区二区| 好吊妞在线新免费视频| 亚洲少妇熟女一区二区三区| 亚洲精品主播一区二区三区| 新午夜福利片在线观看| 亚洲综合国产中文字幕| 精品一级人片内射视频| 亚洲精品一区二区牛仔裤| 一区三区精品久久久精品| 亚洲精品福利在线视频| 天天天干夜夜添狠操美女| 青青草原在线观看网站| 国产午夜激情自拍视频| 深夜三级福利在线观看| 国产精品神马午夜福利| 亚洲日本不卡在线一区二区| 日本黄色三级三级三级| 免费的黄色片带中文字幕| 亚洲欧美精品专区极品| 亚洲 欧美 日韩一区| 亚洲精品国产亚洲精品| 久久99久久久国产精品| 亚洲乱码一区二区在线| 欧美日韩另类综合91| 在线亚洲av不卡一区二区三区| 91精品国产人妻女教师| 国产另类极品熟女露脸自拍| 亚洲熟妇中文字幕五十中出|