自定義springboot啟動器
場景:
當需要把一些公用的api封裝成jar包時,就可以用springboot自定義啟動器來做
原理
springboot自定義啟動器用到的是springboot中的SPI原理,Sringboot會去載入META-INF/spring.factories配置檔案,載入EnableAutoConfiguration 為key的所有類
1、自定義啟動器核心工程
spring.factories 配置內容
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.xx.jack.start.CustomStarterRun
被 springboot SPI 載入的類CustomStarterRun
@Configuration
@ConditionalOnClass(CustomTemplate.class)
@EnableConfigurationProperties(RedisConfig.class)
public class CustomStarterRun {
@Autowired
private RedisConfig redisConfig;
@Bean
public CustomTemplate jackTemplate() {
CustomTemplate customTemplate = new CustomTemplate(redisConfig);
return customTemplate;
}
}
這個 CustomTemplate 例項就是我們封裝的通用 API,其他工程可以直接匯入 jar使用 ,程式碼如下
public class CustomTemplate<K,V> {
private Jedis jedis;
public CustomTemplate(RedisConfig redisConfig) {
jedis = new Jedis(redisConfig.getHost(),redisConfig.getPort());
}
public String put(K k,V v) {
System.out.println("-------加入快取------");
System.out.println("key----:"+k);
System.out.println("value----:"+v);
final String keyString = k.toString();
final Object valuef = v;
final long liveTime = 86400;
byte[] keyb = keyString.getBytes();
byte[] valueb = SerializationUtils.serialize((Serializable) valuef);
return jedis.set(keyb,valueb);
}
public Object get(K k) {
final String keyf = k.toString();
byte[] key = keyf.getBytes();
byte[] bytes = jedis.get(key);
return SerializationUtils.deserialize(bytes);
}
}
@Data
@ConfigurationProperties(prefix = "spring.redis")
public class RedisConfig {
private String host;
private Integer port;
}
2、自定義starter
我們還會定義一個沒程式碼的工程,在這個工程裡只有一個 pom檔案。pom 裡面就是對前面核心工程 jar 包的匯入
<dependencies>
<dependency>
<groupId>com.xx.xx</groupId>
<artifactId>custom-spring-boot-starter-autoconfigurer</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
3、自定義啟動器的使用
其實就只有在 springboot 工程 pom 檔案裡面匯入自定義starter依賴就可以了
<dependency>
<groupId>com.xx.xx</groupId>
<artifactId>customTemplate-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
相關文章
- XAF自定義啟動頁
- Springboot中自定義監聽器Spring Boot
- SpringBoot自動裝配-自定義StartSpring Boot
- SpringBoot(3)-MVC自動配置及自定義檢視控制器Spring BootMVC
- SpringBoot 自定義 starterSpring Boot
- SpringBoot自定義StarterSpring Boot
- springboot 自定義errorSpring BootError
- Oracle RAC的自定義service自啟動Oracle
- docker Redis 自定義配置檔案啟動DockerRedis
- 修改原始碼,自定義chromium啟動頁原始碼
- SpringBoot——自定義自動配置與起步依賴Spring Boot
- springboot+zuul(一)------實現自定義過濾器、動態路由、動態負載。Spring BootZuul過濾器路由負載
- springboot自定義異常Spring Boot
- win10怎麼自定義開機啟動項_win10自定義開機啟動項的方法Win10
- 記windows自定義bat指令碼自啟動WindowsBAT指令碼
- 自定義View( 啟動頁倒數計時)View
- SpringBoot自定義攔截器實現IP白名單功能Spring Boot
- 自定義u-boot啟動logo的方法bootGo
- 適合最新版docker自定義啟動配置Docker
- Linux--deepin--1--自定義軟體加入到deepin啟動器中Linux
- 自定義瀏覽器滾動條樣式瀏覽器
- 08.Django自定義模板,自定義標籤和自定義過濾器Django過濾器
- 實戰|如何自定義SpringBoot Starter?Spring Boot
- _008_SpringBoot_自定義配置Spring Boot
- springBoot自定義註解的使用Spring Boot
- SpringBoot自定義校驗註解Spring Boot
- spring boot啟動掃描不到自定義註解Spring Boot
- 自定義滾動條
- 自定義滾動文字
- SpringBoot讀取自定義配置檔案Spring Boot
- SpringBoot應用篇(一):自定義starterSpring Boot
- SpringBoot自定義控制層引數解析Spring Boot
- springboot如何使用自定義配置檔案Spring Boot
- win10自定義禁用系統啟動項的方法Win10
- Docker 自定義網橋後,無法正常啟動問題Docker
- springboot+redis+Interceptor+自定義annotation實現介面自動冪等Spring BootRedis
- 自定義值轉換器
- Kafka - 自定義分割槽器Kafka