创建一个starter项目 pom.xml如下
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.3.1.RELEASE</version> <optional>true</optional> </dependency> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.13.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>2.3.1.RELEASE</version> </dependency>项目结构如下图
自动配置类
@Configuration @EnableConfigurationProperties(RedissonProperties.class) @ConditionalOnClass(Redisson.class) public class RedissonAutoConfiguration { @Bean public RedissonClient redissonClient(RedissonProperties redissonProperties){ Config config = new Config(); String prefix = "redis://"; config.useSingleServer(). setAddress(prefix+ redissonProperties.getHost()+":"+ redissonProperties.getPort()). setConnectTimeout(redissonProperties.getTimeout()).setPassword(redissonProperties.getPassword()); return Redisson.create(config); } }配置文件类
@ConfigurationProperties(prefix = "omg.redisson") public class RedissonProperties { private String host; private int port = 7100; private String password; private Boolean ssl = false; private int timeout; 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; } public Boolean getSsl() { return ssl; } public void setSsl(Boolean ssl) { this.ssl = ssl; } public int getTimeout() { return timeout; } public void setTimeout(int timeout) { this.timeout = timeout; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }约定配置,在resource下创建META-INF目录,再创建spring.factories文件。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.omg.example.redissonspringbootstarter.RedissonAutoConfigurationadditional-spring-configuration-metadata.json中设置自定义提示
{ "properties": [ { "name": "omg.redisson.host", "type": "java.lang.String", "description": "host", "defaultValue": "localhost" },{ "name": "omg.redisson.port", "type": "java.lang.Integer", "description": "端口", "defaultValue": 6379 } ] }将starter项目install,放在本地maven仓库里。然后再新建一个spring boot项目测试下。 1.pom文件里引入starter 2.填写配置信息 3.测试类
maven打包后,jar包内部层级出现boot-inf,导致配置类无法找到。 加入以下配置
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build>