我們使用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中加入一句話。纔可以。不然找不到這個文件。
本文來源:https://blog.csdn.net/cw_hello1/article/details/79639448