我使用 Spring Boot 多個模塊,我想從 Parent 繼承 application.properties 。我有父模塊:spring-ecommere-demo 和子模塊:模型、核心和安全性。在父模塊中,我放置了一些 jdbc 配置,如下所示:application.properties(父模塊)spring.datasource.url=jdbc:mysql://localhost:3306/BaoTrungspring.datasource.username=rootspring.datasource.password=123456spring.jpa.show-sql=true在子模塊安全性中,我的具體配置如下所示:application-security.properties(安全模塊)app.jwtSecret= JWTSuperSecretKeyapp.jwtExpirationInMs = 604800000安全模塊中 Spring Boot 應用程序的配置如下所示:@SpringBootApplication(scanBasePackages = "springecommeredemo")@PropertySources({ @PropertySource("application-security.properties")})但是當我運行它時,它拋出異常描述:無法配置數據源:未指定“url”屬性,并且無法配置嵌入數據源。原因:未能確定合適的驅動程序類行動:請考慮以下事項:如果您想要嵌入式數據庫(H2、HSQL 或 Derby),請將其放在類路徑中。如果您有要從特定配置文件加載的數據庫設置,您可能需要激活它(配置文件開發當前處于活動狀態)。這意味著子模塊安全性無法從父項目繼承屬性。如何從父模塊繼承所有屬性。因為我使用相同的數據庫,所以我不想在我的項目中配置重復的 jdbc。我想繼承共同的屬性。請幫忙
4 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
您需要Properties在 Spring 中添加多個可訪問的注釋,我添加了重復的注釋,因為@PropertySource之前Java 8如果您需要使用同一注釋的多個實例,則必須將它們包裝在容器注釋中。有了Java 8,這就不再需要了,可以得到更清晰、更易讀的代碼。
@SpringBootApplication(scanBasePackages = "springecommeredemo")
@PropertySource("application.properties")
@PropertySource("application-security.properties")

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
我使用 Spring Boot 2.5。假設我有一個公共模塊和一個使用公共模塊的應用程序模塊。如果我想訪問公共模塊屬性文件中定義的所有屬性,那么我會將以下內容添加到應用程序模塊屬性文件的頂部。
spring.config.import=classpath:common-module.properties
您可以為該“公共模塊”屬性文件指定任何名稱。

慕勒3428872
TA貢獻1848條經驗 獲得超6個贊
所以我正在構建與你相同的框架,這對我有用
classpath
將前綴 this添加到@PropertySource
注釋中
@PropertySource("classpath:application-security.properties") // application-security on root
另外,
如果屬性位于包內,只需執行以下操作:
@PropertySource("classpath:/com/my/project/application.properties") // com.my.project package
如果您想要多個來源,請務必執行相同的操作:
@PropertySources({ @PropertySource("classpath:xxx.properties"), @PropertySource("classpath:/com/my/project/xxx.properties") })
添加回答
舉報
0/150
提交
取消