所有分类
  • 所有分类
  • 未分类

SpringBoot–自动配置相关注解(@Configuration等)–使用/实例

简介

说明

本文介绍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用于将一个类设置为配置类。

作用

  1. 提供bean。在类里的方法上加上@Bean注解
    1. 见:此文
  2. 导入其他配置。
    1. 可以配合@Import注解,通过@Import注解导入其他使用@Configuration的类。

@Import

说明

导入配置类(@Configuration标记的类)。

相关网址

  1. Spring注册Bean(提供Bean)-方法大全 – 自学精灵
    1. 搜索:“@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)

相关网址

  1. Spring-条件注入(条件装配)-详解 – 自学精灵

@EnableConfigurationProperties

说明

使用实体类获取配置。

示例

@EnableConfigurationProperties(RedisProperties.class)

0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录