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依赖,并整合了其他依赖
………………
<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依赖,即可实现效果
本文来自博客园,作者:我永远喜欢石原里美,转载请注明原文链接:https://www.cnblogs.com/yuan-zhou/p/15808727.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-01-16 JavaScript