springboot學習(六): 建立自定義的springboot starter
阿新 • • 發佈:2018-12-11
說明
在學習中,希望能建立自己的依賴,讓springboot通過<dependency>引用。springboot提供了starter來引用,所以通過建立自定義的starter來實現。有關springboot starter的知識詳見Spring Boot Starters
正文
建立自定義的starter,有兩個重要的部分,一個是resources/META-INF/spring.factories檔案,在springboot啟動時通過掃描該檔案來自動載入配置類。另一個是**AutoConfigure類,這個類就是自動配置類,在springboot啟動時被自動載入配置。 在本文中,通過建立一個rediscofig starter來實現redis的配置。
1.建立Maven專案
引入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>2.0.3.RELEASE</version> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> <version>2.0.3.RELEASE</version> </dependency>
spring-boot-configuration-processor這個依賴可以為配置屬性生成元資料,IDE可以自動感知。 spring-boot-autoconfigure這個依賴可以允許我們使用適當的註釋來建立配置類。
2.建立RedisProperties
@ConfigurationProperties(prefix = "redis.msg") public class RedisProperties { private String host; private int port; private int timeout; // Getters + Setters }
3.建立RedisConfig
public class RedisConfig {
private static final Logger logger = LoggerFactory.getLogger(RedisConfig.class);
private RedisProperties redisProperties;
public RedisConfig(){}
public RedisConfig(RedisProperties redisProperties){
this.redisProperties = redisProperties;
}
@PostConstruct
private void init(){
logger.info(String.format("Init Config -- host : %s, port : %d, timeout : %d %n",redisProperties.getHost(),redisProperties.getPort(),redisProperties.getTimeout()));
}
}
4.建立RedisAutoConfigure
@Configuration
@ConditionalOnClass(RedisConfig.class)
@EnableConfigurationProperties(RedisProperties.class)
public class RedisAutoConfigure {
@Autowired
private RedisProperties redisProperties;
@Bean
@ConditionalOnMissingBean
public RedisConfig redisConfig(){
return new RedisConfig(redisProperties);
}
}
有關注解:
@ConditionalOnClass 當在classpath發現指定類時進行自動配置
@ConditionalOnMissingBean 當spring context不存在該bean時進行配置
@ConditionalOnProperty 當指定的屬性有指定的值使進行配置
5.建立spring.factories
在resources目錄下建立META-INF目錄,在該目錄下建立檔案
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.wds.redis.RedisAutoConfigure
6.釋出引用
使用mvn命令安裝到本地的maven倉庫
mvn clean install
新建一個springboot專案引入依賴
<dependency>
<groupId>com.wds</groupId>
<artifactId>redis.config.starter</artifactId>
<version>1.0.0</version>
</dependency>