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

RedisProperties類

a、application.properties配置參數示例

spring.redis.database=0redis

spring.redis.host=127.0.0.1spring

spring.redis.password=123app

spring.redis.port=6379源碼分析

spring.redis.pool.max-idle=8spa

spring.redis.pool.min-idle=0  對象

spring.redis.pool.max-active=8  blog

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

b、application.yml配置參數示例

    spring:it

      redis :io

        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中。

相關文章
相關標籤/搜索