SpringBoot中application.yml配置文件中的redis屬性是如何讀入到程序中的?


RedisProperties類

a、application.properties配置參數示例

spring.redis.database=0

spring.redis.host=127.0.0.1

spring.redis.password=123

spring.redis.port=6379

spring.redis.pool.max-idle=8

spring.redis.pool.min-idle=0  

spring.redis.pool.max-active=8  

spring.redis.pool.max-wait=-1

b、application.yml配置參數示例

    spring:

      redis :

        host : localhost 

        port : 6379 

        password : 123

        database : 1

        pool.max-idle : 8 

        pool.min-idle : 1

        pool.max-active : 8  

        pool.max-wait : -1  

c、RedisProperties 源碼

 源碼分析

此類被@ConfigurationProperties注解,表示從外部文件注入屬性值,外部文件中的參數會自動封裝到RedisProperties中

RedisAutoConfiguration類源碼

源碼分析

此類被@EnableConfigurationProperties注解,所以SpringBoot會觸發對RedisProperties執行自動綁定屬性值。

此類會自動創建bean對象: redis連接池JedisConnectionFactory和redis模板類(RedisTemplate和StringRedisTemplate)。直接在應用中通過@Autowire就可以注入以上對象。

 項目啟動類啟動時如何關聯到配置類RedisAutoConfiguration

查看源碼@SpringBootApplication被@EnableAutoConfiguration注解

被@EnableAutoConfiguration注解時,SpringBoot啟動時會掃描對應jar包中的META-INF/spring-autoconfigure-metadata.properties文件,並初始化里面的配置的類。查看spring-autoconfigure-metadata.properties,里面配置了上文的RedisAutoConfiguration類,所以我們可以直接在類中注入RedisTemplate

項目啟動時,主啟動類被@EnableAutoConfiguration注解,會掃描其引入的jar包中的spring.factories文件。

小結:

1)項目主啟動類上被@SpringBootApplication注解,@SpringBootApplication又被@EnableAutoConfiguration注解。@EnableAutoConfiguration會觸發掃描項目引入的jar包中的spring.factories文件。主啟動類再加上注解@EnableCaching后,這樣就會觸發初始化類org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration。

2)RedisAutoConfiguration被@EnableConfigurationProperties注解,會觸發對RedisProperties執行自動綁定屬性值。

3)RedisProperties類被@ConfigurationProperties注解,表示從外部文件(如application.properties)注入屬性值。application.properties中的參數會被自動封裝到RedisProperties中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM