1. 程式人生 > >在Spring Boot中多個模組使用對應的配置檔案

在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中加入一句話。才可以。不然找不到這個檔案。