引言:在没有SpringBoot的时候我们需要引用的第三方中间件技术时,需要自己手动配置xml文件或者通过注解将其注入到ioc容器中,并且还需要对其进行一些额外的配置,实现起来会比较麻烦,但是在SpringBoot中我么只需要引入一个stater即可。
在SpringBoot中我们对每个中间件技术 规范一个接口,规定了SpringBoot项目启动时会自动扫描外部引用依赖的META-INF包下的spring.factory文件,就可以将引入的以来进行自动配置,这样的规范可以简化我们对外部依赖配置的操作。简单地说就是在Spring Boot下我们可以通过一些简单的注解就可以实现对外部依赖的自动配置及
我们可以先简单编写一个自动配置类进行测试,主要实现我们在SpringBoot项目启动时自动加载一个Jedis类:
一、创建主项目,starter项目以及autoconfig项目
创建好之后我们需要将autoconfig(自动配置类)通过依赖引入的方式引入到starter(启动类)中,在pom文件中找到config类的项目标识文件粘贴到starter中,导入依赖,再将导入好的starter类和autoconfig类一起通过starter类的项目表示文件导入到主项目文件的pom文件中。

二、autoconfig类中的配置
(一)、RedisConfig
创建RedisConfig实体类,保存Jedis的port和host信息:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties(prefix = "spring.data.redis")
public class RedisConfig {
public String host;
public int port;
}
@ConfigurationProperties 加载配置文件的属性赋值
并在主项目文件的application配置文件中实例化一个Redis并对其属性赋值。
spring.application.name=demo-main
spring.data.redis.host=localhost
spring.data.redis.port=6000
(二)、AutoConfig
创建AutoConfig类编写生成Jedis的代码,通过获取RedisConfig的属性值创建Jedis:
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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 redis.clients.jedis.Jedis;
@Configuration
@EnableConfigurationProperties(RedisConfig.class)
public class AutoConfig {
@Bean
@ConditionalOnMissingBean
public Jedis jedistest(RedisConfig config){
return new Jedis(config.getHost(),config.getPort());
}
}
通过@XConfiguration将类标为配置类,再通过@EnableConfigurationProperties注解开启自动配置类且指向RedisConfig,在方法体中返回一个Jedis。
(三)、通过spring.factories文件指定扫描路径
在resources文件夹下创建META-INF文件夹并在其中编写spring.factories文件,其中指定了SpringBoot在自动配置时需要扫描的路径
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ape.demoautoconfig.AutoConfig
三、测试
在主项目的启动类中,获取Bean对象Jedis并打印输出,成功输出我们在自动配置类中注入的Jedis对象则表示测试通过。