中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

如何手寫一個簡單的 Spring Boot Starter

發(fā)布于:2021-03-01 15:57:50

0

3308

0

Spring Boot
# 如何手寫一個簡單的 Spring Boot Starter

我們今天演示如何手寫一個簡單的 `Spring Boot Starter`,這里就使用 `Redisson` 為例演示吧。

## 一、創(chuàng)建項目、添加依賴

因為是寫 `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);
   }

}
```

## 四、創(chuàng)建資源文件

最后需要在 `resources` 目錄下創(chuàng)建 `META-INF/spring.factories` 文件,指定 `Spring Boot` 掃描到我們創(chuàng)建的 `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` 對象了。