Spring Boot基础(三)自动配置:创建自定义starter

自定义依赖,实现引入依赖后SpringBoot自动创建该模块的Bean

参考Mybatis依赖:

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

 

Mybatis-starter本身并没有代码,只是引入了mybatis-autoconfigura依赖,并整合了其他依赖

Spring Boot基础(三)自动配置:创建自定义starter

………………
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-autoconfigure</artifactId> </dependency>
………………

而mybatis-autoconfigura依赖中就有代码了,有一个MybatisAutoConfiguration配置类

Spring Boot基础(三)自动配置:创建自定义starter

 

 并且在META-INF下有一个spring.factories文件有配置:

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration

 

对照Mybatis,可以制作自定义的starter:

建一个autoconfiguation模块,在里面初始化Jedis的Bean,定义好MATE-INF/spring.factories文件。再另建一个starter模块中引入autoconfiguation模块。

在测试模块中引入starter模依赖测试获取Jedis的Bean,操作Jedis

 

先创建autoconfigur模块,不相关的依赖可以删除,创建自定义配置类AutoConfiguration和配置文件类RedisProperties等以下红色方框,并在redis中引入Jedis依赖

 Spring Boot基础(三)自动配置:创建自定义starter

 

 AutoConfiguration类:

@Configuration
@EnableConfigurationProperties(RedisProperties.class) //将自定义的配置文件类启用
public class AutoConfiguration {
    /**
     * jedis的bean
     * @return
     */
    @Bean
  @ConditionalOnMissingBean(name="jedis")  //当自己定义了jedis 时,就无需创建当前bean
  public Jedis jedis(RedisProperties redisProperties){ return new Jedis(redisProperties.getHost(), redisProperties.getPort() ); } }

配置文件类:

@ConfigurationProperties(prefix = "redis")
//该类设置为配置类
public class RedisProperties {
    //设置默认值
    private String host = "xxx.xxx.xxx.xxx";
    private int port = 6379;
    public String getHost() {
        return host;
    }
    public void setHost(String host) {
        this.host = host;
    }
    public int getPort() {
        return port;
    }
    public void setPort(int port) {
        this.port = port;
    }
}

spring.factories:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.yz.redis.config.AutoConfiguration

 

 starter中无需做什么事,只需引入autoconfigur依赖,然后在主模块中引入starter依赖,即可实现效果

 

 

 
上一篇:SpringBoot特点


下一篇:SpringBoot之自定义starter