參考Spring Boot Starters - 御坂研究所
創建自己的starter
starter是依賴的一種synthesize(合成)。
starter會把需要用到的依賴全部包含進來,避免開發者自己手動引入依賴。
starter的邏輯
- pom.xml
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starters</artifactId><version>2.0.4.RELEASE</version></parent><dependencies><!-- 自定義starter依賴此jar包 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies>
- 創建ConfigurationProperties,設置默認配置,如果配置文件有同名的配置,會覆蓋默認配置
package org.cc.http.configuration;import org.springframework.boot.context.properties.ConfigurationProperties;@ConfigurationProperties(prefix="http")// 自動獲取配置文件中前綴為http的屬性,把值傳入對象參數
public class HttpConfigurationProperties {// 如果配置文件中配置了http.url屬性,則該默認屬性會被覆蓋private String url = "http://www.baidu.com/";public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}}
- 創建業務類
package org.cc.http.configuration;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;public class HttpClient {private String url;// 根據url獲取網頁數據public String getHtml() {try {URL url = new URL(this.url);URLConnection urlConnection = url.openConnection();BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "utf-8"));String line = null;StringBuilder sb = new StringBuilder();while ((line = br.readLine()) != null) {sb.append(line).append("\n");}return sb.toString();} catch (Exception e) {e.printStackTrace();}return "error";}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}}
- starter核心功能:創建HttpAutoConfiguration類,使用HttpConfigurationProperties定義的配置,返回一個業務對象
package org.cc.http.configuration;import javax.annotation.Resource;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableConfigurationProperties(HttpConfigurationProperties.class)
public class HttpAutoConfiguration {@Resourceprivate HttpConfigurationProperties properties; // 使用配置// 在Spring上下文中創建一個對象@Bean@ConditionalOnMissingBeanpublic HttpClient init() {HttpClient client = new HttpClient();String url = properties.getUrl();client.setUrl(url);return client;}}
- 將HttpAutoConfiguration加入到src\main\resources\META-INF\spring.factories進行聲明
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.cc.http.configuration.HttpAutoConfiguration
創建好starter之后,打包就可以使用了。
springboot配置詳解
Spring Boot 2.0 教程 - 配置詳解 - NNS - 博客園Spring Boot 可以通過properties文件,YAML文件,環境變量和命令行參數進行配置。屬性值可以通過,@Value注解,Environment或者ConfigurationProperhttps://www.cnblogs.com/hitandrew/p/9062861.html
?Java啟動參數和腳本 - Howlet - 博客園