我有一個 Spring Boot 應用程序綁定到 Cloud Foundry 環境中的數據庫服務實例(postgres)。應用程序的 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:[email protected]: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": []? ?}? ]當我啟動該應用程序時,cloud foundry 正在創建一個 DataSource 對象,并將其放入 spring 的上下文中,并按預期使用先前 vcaps 的精確配置。我正在嘗試覆蓋數據源 neam 對象,以便能夠將數據庫的架構名稱連接到 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,并在創建我的 bean 后創建了一個新的 bean。當我執行以下 CF 命令時:$?cf?us?myapp?mypostgres
$?cf?restart?myapp我的豆子沒有被過度使用,而且效果很好。我正在嘗試找到一種方法來取消由云基金會或任何為我做的事情完成的自動配置。任何想法?提前致謝
1 回答

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