简介
说明
本文介绍SpringBoot自动配置相关的注解。
源码示例
SpringBoot里的自动配置类很多,路径是:spring-boot-autoconfigure-2.3.0.RELEASE.jar:META-INF\spring.factories
以Redis的配置为例:
package org.springframework.boot.autoconfigure.data.redis; import java.net.UnknownHostException; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; @Configuration(proxyBeanMethods = false) @ConditionalOnClass(RedisOperations.class) @EnableConfigurationProperties(RedisProperties.class) @Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class }) public class RedisAutoConfiguration { @Bean @ConditionalOnMissingBean(name = "redisTemplate") public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate<Object, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); return template; } @Bean @ConditionalOnMissingBean public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(redisConnectionFactory); return template; } }
@Configuration
@Configuration用于将一个类设置为配置类。
作用
- 提供bean。在类里的方法上加上@Bean注解
- 见:此文
- 导入其他配置。
- 可以配合@Import注解,通过@Import注解导入其他使用@Configuration的类。
@Import
说明
导入配置类(@Configuration标记的类)。
相关网址
- Spring注册Bean(提供Bean)-方法大全 – 自学精灵
- 搜索:“@Import”
@AutoConfigureOrder
说明
指定自动配置类的自动配置顺序。
只会对META-INF/spring.factories里面的配置类进行排序。如果配置类被@SpringBootApplication扫描到,那么这个@AutoConfigureOrder会失效。
示例
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureBefore
说明
在指定的配置类之前进行配置。
只会对META-INF/spring.factories里面的配置类进行排序。如果配置类被@SpringBootApplication扫描到,那么这个@AutoConfigureBefore会失效。
示例
@AutoConfigureBefore({ XxxAutoConfiguration.class, YyyAutoConfiguration.class})
@AutoConfigureAfter
说明
在指定的配置类之前进行配置。
只会对META-INF/spring.factories里面的配置类进行排序。如果配置类被@SpringBootApplication扫描到,那么这个@AutoConfigureAfter会失效。
示例
@AutoConfigureBefore({ XxxAutoConfiguration.class, YyyAutoConfiguration.class})
@ConditionalOnClass等
说明
在满足条件时才配置这个自动配置类。
示例
@ConditionalOnClass(RedisOperations.class)
相关网址
@EnableConfigurationProperties
说明
使用实体类获取配置。
示例
@EnableConfigurationProperties(RedisProperties.class)
请先
!