在Spring Boot中多個模組使用對應的配置檔案
我們使用Spring Boot編寫多個模組開發時,我們希望各個模組使用各自的配置檔案,避免將整個專案的配置檔案都寫在一起,從而降低各個模組之間的耦合度。
這裡有兩種方法讓各個模組讀取自己的配置檔案:
先看看以下專案的目錄結構:有一個清晰的瞭解。
我們讓各個模組讀取自己的配置檔案資訊:redis模組讀取redis的配置檔案。
第一種方法:(使用屬性配置檔案,即properties結尾的配置檔案)
我們使用屬性檔案(.properties)字尾結尾的配置檔案。
1. 我們在各個模組的resource下建立我們的配置檔案。例如我們在redis模組下的resource放置一個redis.properties檔案。
這個檔案的內容是:
spring.redis.open=true
spring.redis.port=6379
spring.redis.database=0
spring.redis.host=localhost
spring.redis.password=
spring.redis.timeout=6000
spring.redis.jedis.pool.max-active=1000
spring.redis.jedis.pool.max-wait=-1
spring.redis.jedis.pool.max-idle=10
spring.redis.jedis.pool.min-idle=5
2. 我們讀取相應的配置檔案使用@PropertySource註解。
使用@PropertySource(value = "classpath:redis.properties")註解,並配合@Value註解@Value("${spring.redis.open}"),完成引數的注入,一定要有@Configuration註解,不然不起作用。
注意:classpath:redis,properties中【冒號】之後沒有空格,不然找不到檔案
注意:我們將資原始檔放入到resource目錄下的話,就會在執行專案的放入到相應的classes目錄下,
注意:這種方法,我們不需要各個模組之間的配合,可以很容易的將各個模組去掉。而不影響其他各個模組的執行
第二種方法:使用yml檔案的配置檔案(以yml字尾結尾)
現在我們經常使用yml檔案作為我們的配置檔案。如何讓各個模組使用自己的yml檔案呢?
注意:@PropertySource註解只支援properties檔案。而不支援yml檔案。
我也是嘗試了好久,所以我們不能直接使用:@PropertySource(value="redis.yml")這樣我們會讀取不到資料,並報錯,說不能解析變數佔位符${spring.redis.open}。
1. 使用yml的配置檔案,名稱一定以application-開頭,例如:application-dev.yml,application-pro.yml,application-redis.yml檔案等你等。
檔案的內容:
spring:
redis:
database: 0
host: localhost
jedis:
pool:
max-active: 1000
max-idle: 10
max-wait: -1
min-idle: 5
open: true
password: ''
port: 6379
timeout: 1000
2. 在我們的主模組的application.yml中加入下面的一句話:
spring:
profiles:
active: dev,redis(這裡只寫application-之後的名稱。多個之間用逗號分隔)
就可以了。
注意:這個方法我們必須在主模組的application.yml中加入一句話。才可以。不然找不到這個檔案。