前言:今天介紹一SpringBoot的Starter,并手寫一個自己的Starter,在SpringBoot項目中,有各種的Starter提供給開發(fā)者使用,Starter則提供各種API,這樣使開發(fā)SpringBoot項目變得簡單。實際上Starter簡單來說就是Spring+SpringMVC開發(fā)的。話不多說開始擼代碼
創(chuàng)新互聯(lián)建站成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術為基點,以客戶需求中心、市場為導向”的快速反應體系。對公司的主營項目,如中高端企業(yè)網站企劃 / 設計、行業(yè) / 企業(yè)門戶設計推廣、行業(yè)門戶平臺運營、手機APP定制開發(fā)、移動網站建設、微信網站制作、軟件開發(fā)、成都服務器托管等實行標準化操作,讓客戶可以直觀的預知到從創(chuàng)新互聯(lián)建站可以獲得的服務效果。首先在idea中創(chuàng)建SpringBoot項目,并首先創(chuàng)建一個BeautyProperties類,代碼代碼如下:
package com.mystarter;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "beauty")
public class BeautyProperties {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
@ConfigurationProperties(
prefix = "spring.rabbitmq"
)
public class RabbitProperties {
private String host = "localhost";
private int port = 5672;
private String username = "guest";
private String password = "guest";
private final RabbitProperties.Ssl ssl = new RabbitProperties.Ssl();
private String virtualHost;
private String addresses;
package com.mystarter;
public class ActionService {
private String name;
private Integer age;
public String sayHello() {
return "my name is "+ name +",I am "+ age +" years old";
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- 最后再創(chuàng)建一個類ActionServiceAutoConfiguration,這個類是重點,代碼如下:
- @Configuration注解表明這是一個配置類
- @EnableConfigurationProperties(BeautyProperties.class)表明開啟@ConfigurationProperties這個注解,使這個注解生效
- @ConditionalOnClass(ActionService.class)條件判斷注解,表明有這個類ActionService,條件才生效,即配置才生效。
- 通過@Autowired將BeautyProperties 類自動注入IOC容器中
- @Bean將返回的值注入到容器中
package com.mystarter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration@EnableConfigurationProperties(BeautyProperties.class)
br/>@EnableConfigurationProperties(BeautyProperties.class)
public class ActionServiceAutoConfiguration {
@Autowired
BeautyProperties beautyProperties;
@Bean
ActionService helloService() {
ActionService helloService = new ActionService();
helloService.setName(beautyProperties.getName());
helloService.setAge(beautyProperties.getAge());
return helloService;
}
}
- 然后再resources文件夾下的application.properties文件中,加入如下配置,作為使用這個Starter時候,沒有設置相關值的時候作為默認值注入到配置類中
beauty.name=李依依默認
beauty.age=18
- 最后再resources中新建一個META-INF文件夾,然后在新建一個文件spring.factories,這個名字和文件夾的名字不能改,加入配置如下,這個表明指定自動配置的類的全路徑,自動配置的時候就找到這個全路徑,實例化這個對象到容器中
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.mystarter.ActionServiceAutoConfiguration
- 最后一步點擊install,出現(xiàn)Build Success說明這個Starter已經安裝到本地maven倉庫中,可以被別人引用
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20191218230620617.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjU1MDE3,size_16,color_FFFFFF,t_70)
## 2.測試Starter
新建一個SpringBoot工程,在application.properties的文件中加入如下配置:
beauty.name=李依依
beauty.age=24
在pom文件中引入依賴,如下:
然后測試,如下代碼
package com.org.ldc.mystarter;
import com.mystarter.HelloService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest
class TestmystarterApplicationTests {
@Autowired
HelloService helloService;
@Test
public void contextLoads() {
System.out.println(helloService.sayHello());
}
}
執(zhí)行測試,出現(xiàn)如下,說明創(chuàng)建成功
![在這里插入圖片描述](https://img-blog.csdnimg.cn/2019121823094633.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjU1MDE3,size_16,color_FFFFFF,t_70)
>更多的教程請關注:非科班的科班,路過有空的大佬們點個贊,謝謝大家
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。