自定义依赖,实现引入依赖后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依赖,并整合了其他依赖
………………
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-autoconfigure</artifactId> </dependency>
………………
而mybatis-autoconfigura依赖中就有代码了,有一个MybatisAutoConfiguration配置类
并且在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依赖
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依赖,即可实现效果