发布于:2021-03-01 15:57:50
0
2739
0
# 如何手写一个简单的 Spring Boot Starter
我们今天演示如何手写一个简单的 `Spring Boot Starter`,这里就使用 `Redisson` 为例演示吧。
## 一、创建项目、添加依赖
因为是写 `Redisson` 的例子,需要引入 `Redisson` 和 `Spring Boot` 的依赖
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.1</version>
</dependency>
```
## 二、定义属性类
这里就定义了连接 `Redis` 的地址、端口、密码等信息:
```java
@ConfigurationProperties(prefix = "gp.redisson")
public class RedissonProperties {
private String host = "localhost";
private String password;
private int port = 6379;
private int timeout;
private boolean ssl;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public int getTimeout() {
return timeout;
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
public boolean isSsl() {
return ssl;
}
public void setSsl(boolean ssl) {
this.ssl = ssl;
}
}
```
## 三、定义配置类
配置类里面通过读取配置,实例化出来 `RedissonClient` 对象:
```java
@Configuration
@ConditionalOnClass(Redisson.class)
@EnableConfigurationProperties(RedissonProperties.class)
public class RedissonAutoConfiguration {
@Bean
public RedissonClient redissonClient(RedissonProperties redissonProperties) {
Config config = new Config();
String prefix = "redis://";
if (redissonProperties.isSsl()) {
prefix = "rediss://";
}
SingleServerConfig singleServerConfig = config.useSingleServer()
.setAddress(prefix + redissonProperties.getHost() + ":" + redissonProperties.getPort())
.setConnectTimeout(redissonProperties.getTimeout());
if (StringUtils.hasLength(redissonProperties.getPassword())) {
singleServerConfig.setPassword(redissonProperties.getPassword());
}
return Redisson.create(config);
}
}
```
## 四、创建资源文件
最后需要在 `resources` 目录下创建 `META-INF/spring.factories` 文件,指定 `Spring Boot` 扫描到我们创建的 `RedissonAutoConfiguration` 类,从而实例化 `RedissonClient`
```properties
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.jerry.redis.RedissonAutoConfiguration
```
## 五、如何使用
在其它项目中如果需要使用我们自定义的 `Starter`,只需要添加依赖:
```xml
<dependency>
<groupId>com.jerry</groupId>
<artifactId>redis-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
```
然后在配置文件中配置 `Redis` 的连接信息:
```yaml
gp:
redisson:
host: localhost
port: 6379
```
最后就可以愉快的使用 `RedissonClient` 对象了。
作者介绍