日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

使用Spring-Cloud将Spring Boot应用程序部署到Cloud Foundry

發布時間:2023/12/3 javascript 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Spring-Cloud将Spring Boot应用程序部署到Cloud Foundry 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有一個基于Spring Boot的小型應用程序 ,該應用程序使用Postgres數據庫作為數據存儲。
我想記錄將示例應用程序部署到Cloud Foundry的步驟 。 Spring Boot參考指南中描述了一些步驟 ,但是這些指南并未充分說明如何與基于云的環境中提供的數據存儲集成。 Spring-cloud提供了連接在云上部署的基于Spring的應用程序以發現并連接到綁定服務的膠水,因此第一步是使用以下pom條目將Spring-cloud庫引入項目中:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-spring-service-connector</artifactId><version>1.0.0.RELEASE</version> </dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-cloudfoundry-connector</artifactId><version>1.0.0.RELEASE</version> </dependency>

一旦引入了這種依賴性,就很容易連接到綁定的服務,只需按照以下方式定義配置:

@Configuration public class PostgresCloudConfig extends AbstractCloudConfig {@Beanpublic DataSource dataSource() {return connectionFactory().dataSource();}}

Spring-Cloud理解該應用程序已部署在特定的云上(當前的Cloud Foundry和Heroku通過查找已部署的Cloud平臺的某些特征),發現了綁定的服務,認識到存在一個綁定的服務,基于Postgres的數據源可以使用該綁定服務創建并返回數據源作為Spring bean。 現在,該應用程序可以干凈地部署到基于Cloud Foundry的云中。 可以在使用bosh-lite部署的Cloud Foundry版本中試用該示例應用程序,這是在Cloud Foundry啟動并使用bosh-lite運行后我機器中的步驟的樣子:以下命令在以下位置創建用戶提供的服務Cloud Foundry:

cf create-user-provided-service psgservice -p '{"uri":"postgres://postgres:p0stgr3s@bkunjummen-mbp.local:5432/hotelsdb"}'

現在,推動應用程序,但是不要啟動它。 一旦以上服務綁定到應用程序,我們就可以這樣做:

cf push spring-boot-mvc-test -p target/spring-boot-mvc-test-1.0.0-SNAPSHOT.war --no-start

將服務綁定到應用程序并重新啟動應用程序:

cf bind-service spring-boot-mvc-test psgservice cf restart spring-boot-mvc-test

本質上就是這樣,理想情況下,Spring Cloud應該接管并干凈地解析來自綁定服務的憑證,該憑證在Cloud Foundry中轉換為稱為VCAP_SERVICES的環境變量,并從中創建數據源。 但是,這種方法存在一個問題–一旦使用spring-cloud方法創建了數據源bean,它就不再在本地環境中工作。 為此,可能的解決方法是使用Spring配置文件,假設在返回基于Spring-cloud的數據源的Cloud環境中有一個不同的“ cloud” Spring配置文件可用:

@Profile("cloud") @Configuration public class PostgresCloudConfig extends AbstractCloudConfig {@Beanpublic DataSource dataSource() {return connectionFactory().dataSource();} }

并讓Spring-boot自動配置在默認的本地環境中創建數據源,這樣配置既可以在本地也可以在Cloud中工作。 該“云”配置文件來自何處,可以使用ApplicationContextInitializer創建它,并采用以下方式:

public class SampleWebApplicationInitializer implements ApplicationContextInitializer<AnnotationConfigEmbeddedWebApplicationContext> {private static final Log logger = LogFactory.getLog(SampleWebApplicationInitializer.class);@Overridepublic void initialize(AnnotationConfigEmbeddedWebApplicationContext applicationContext) {Cloud cloud = getCloud();ConfigurableEnvironment appEnvironment = applicationContext.getEnvironment();if (cloud!=null) {appEnvironment.addActiveProfile("cloud");}logger.info("Cloud profile active");}private Cloud getCloud() {try {CloudFactory cloudFactory = new CloudFactory();return cloudFactory.getCloud();} catch (CloudException ce) {return null;}} }

該初始化程序利用Spring-cloud的掃描功能來激活“云”配置文件。 我想嘗試的最后一件事是在Spring-Cloud的眼中使我的本地設備表現得至少像Cloud,這可以通過添加一些環境變量來完成,Spring-Cloud使用這些環境變量來確定云的類型。應用程序已部署,以下是我在本地的啟動腳本,該應用程序假裝成好像已部署在Cloud Foundry中:

read -r -d '' VCAP_APPLICATION <<'ENDOFVAR' {"application_version":"1","application_name":"spring-boot-mvc-test","application_uris":[""],"version":"1.0","name":"spring-boot-mvc-test","instance_id":"abcd","instance_index":0,"host":"0.0.0.0","port":61008} ENDOFVARexport VCAP_APPLICATION=$VCAP_APPLICATIONread -r -d '' VCAP_SERVICES <<'ENDOFVAR' {"postgres":[{"name":"psgservice","label":"postgresql","tags":["postgresql"],"plan":"Standard","credentials":{"uri":"postgres://postgres:p0stgr3s@bkunjummen-mbp.local:5432/hotelsdb"}}]} ENDOFVARexport VCAP_SERVICES=$VCAP_SERVICESmvn spring-boot:run
  • 可以在以下 github位置獲得整個示例: https : //github.com/bijukunjummen/spring-boot-mvc-test

結論

Spring Boot和Spring-Cloud項目現在提供了一個出色的工具集,可以創建支持Spring的云就緒應用程序,希望這些說明對將Spring Boot與Spring-Cloud集成以及將它們用于無縫的本地和云部署有用。

翻譯自: https://www.javacodegeeks.com/2014/08/deploying-a-spring-boot-application-to-cloud-foundry-with-spring-cloud.html

總結

以上是生活随笔為你收集整理的使用Spring-Cloud将Spring Boot应用程序部署到Cloud Foundry的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。