我有一個 Spring Boot 應(yīng)用程序綁定到 Cloud Foundry 環(huán)境中的數(shù)據(jù)庫服務(wù)實例(postgres)。應(yīng)用程序的 VCAP 包括以下綁定:"postgresql": [? ?{? ? "binding_name": null,? ? "credentials": {? ? ?"dbname": "yD6nAoGVmfmqnbex",? ? ?"end_points": [? ? ? {? ? ? ?"host": "10.11.241.0",? ? ? ?"network_id": "SF",? ? ? ?"port": "50257"? ? ? }? ? ?],? ? ?"hostname": "10.11.241.0",? ? ?"password": "No963ndbbsfndJoj",? ? ?"port": "50257",? ? ?"ports": {? ? ? "5432/tcp": "50257"? ? ?},? ? ?"uri": "postgres://Gw7n8pHTvpM2gh7t:No963ndbbsfndJoj@10.11.241.0:50257/yD6nAoGVmfmqnbex",? ? ?"username": "Gw7n8pHTvpM2gh7t"? ? },? ? "instance_name": "cispostgres",? ? "label": "postgresql",? ? "name": "cispostgres",? ? "plan": "v9.6-dev",? ? "provider": null,? ? "syslog_drain_url": null,? ? "tags": [? ? ?"postgresql",? ? ?"relational"? ? ],? ? "volume_mounts": []? ?}? ]當(dāng)我啟動該應(yīng)用程序時,cloud foundry 正在創(chuàng)建一個 DataSource 對象,并將其放入 spring 的上下文中,并按預(yù)期使用先前 vcaps 的精確配置。我正在嘗試覆蓋數(shù)據(jù)源 neam 對象,以便能夠?qū)?shù)據(jù)庫的架構(gòu)名稱連接到 url,如下所示:@Bean(name = "dataSource")? ? @Primary? ? public DataSource createDataSource() throws SQLException {? ? ? ? String dbUri = "jdbc:postgresql://10.11.241.0:50257/yD6nAoGVmfmqnbex?currentSchema=accounts";? ? ? ? String username = "Gw7n8pHTvpM2gh7t";? ? ? ? String password = "No963ndbbsfndJoj";? ? ? ? DataSource dataSource = DataSourceBuilder.create()? ? ? ? ? ? ? ? .url(dbUri)? ? ? ? ? ? ? ? .username(username)? ? ? ? ? ? ? ? .password(password)? ? ? ? ? ? ? ? .type(org.postgresql.ds.PGSimpleDataSource.class)? ? ? ? ? ? ? ? .driverClassName(DRIVER_CLASS_NAME)? ? ? ? ? ? ? ? .build();? ? ? ? return dataSource;? ? }不幸的是,cloudfounday 似乎覆蓋了我的 bean,并在創(chuàng)建我的 bean 后創(chuàng)建了一個新的 bean。當(dāng)我執(zhí)行以下 CF 命令時:$?cf?us?myapp?mypostgres
$?cf?restart?myapp我的豆子沒有被過度使用,而且效果很好。我正在嘗試找到一種方法來取消由云基金會或任何為我做的事情完成的自動配置。任何想法?提前致謝
1 回答

ibeautiful
TA貢獻(xiàn)1993條經(jīng)驗 獲得超6個贊
有幾種方法可以選擇退出自動重新配置。
AbstractCloudConfig
如果您的應(yīng)用程序具有從 擴展的 Java 配置,或者如果您定義了@Bean
類型為 的,則可以選擇退出自動重新配置Cloud
。在任何一種情況下,自動重新配置都應(yīng)該看到您正在進(jìn)行手動配置并退出。您可以通過將 env 變量設(shè)置
JBP_CONFIG_SPRING_AUTO_RECONFIGURATION
為 來完全禁用自動重新配置{ enabled: false }
。這將完全打開自動重新配置。
這兩個選項之間的主要區(qū)別在于,后者告訴 Java buildpack 甚至不安裝自動重新配置,這意味著您會失去一些附加功能,例如屬性cloud.services
占位符和自動添加cloud
Spring 配置文件。
我個人更喜歡選項#2,因為我不使用屬性占位符,并且如果您需要的話,通過添加 env 變量并將其設(shè)置為 來cloud.services
啟用云配置文件很容易。SPRING_PROFILES_ACTIVE
cloud
希望有幫助!
添加回答
舉報
0/150
提交
取消