您好,登錄后才能下訂單哦!
今天小編給大家分享一下SpringBoot場景啟動器Starters怎么自定義的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
1、場景需要用到的依賴是什么?
比如依賴的jar
2、如何編寫自動配置?
以WebMvcAutoConfiguration自動配置為例:
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,
WebMvcConfigurerAdapter.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,
ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {
public static final String DEFAULT_PREFIX = "";
public static final String DEFAULT_SUFFIX = "";
@Configuration指定這是一個配置類
@ConditionalOnXXX 在指定條件成立的情況下自動配置類生效
自動裝配順序
在特定自動裝配Class之前 @AutoConfigureBefore
在特定自動裝配Class之后@AutoConfigureAfter
指定順序@AutoConfigureOrder
@Bean 給容器中添加組件
@ConfigurationPropertie結合相關xxxProperties類來綁定相關的配置
@ConfigurationProperties(prefix = "spring.mvc")
public class WebMvcProperties {
}
@EnableConfigurationProperties 讓xxxProperties生效加入到容器中
@Configuration
@Import(EnableWebMvcConfiguration.class)
@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })
public static class WebMvcAutoConfigurationAdapter extends WebMvcConfigurerAdapter {
}
配置自動裝配Bean:
自動配置類要能加載
將需要啟動就加載的自動配置類,將標注@Configuration的自動配置類配置在META‐INF/spring.factories下,自動配置類就會生效
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,
3、模式
啟動器(starter)
啟動器只用來做依賴導入
專門寫一個自動配置模塊
啟動器依賴自動配置,別人只需要引入啟動器(starters)
mybatis-spring-boot-starter 自定義啟動器名 -spring-boot-starter
構建項目:
1.先創建一個空工程
2、創建兩個模塊分別是啟動器starter的maven模塊和spring的初始化器創建的自動配置模塊
啟動器maven模塊
自定義的starters
spring的初始化器創建模塊(創建自動配置相關的模塊)
在啟動器starter的pom文件中引入配置類的坐標ming-spring-boot-starter-autoconfigurer
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ming.springboot</groupId>
<artifactId>ming-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.ming.springboot</groupId>
<artifactId>ming-spring-boot-starter-autoconfigurer</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
寫一個打招呼的功能
package com.ming.springboot;
/**
* 打招呼的
*
*/
public class HelloService {
HelloProperties helloProperties;
public HelloProperties getHelloProperties() {
return helloProperties;
}
public void setHelloProperties(HelloProperties helloProperties) {
this.helloProperties = helloProperties;
}
public String sayHello(String name){
return helloProperties.getPrefix()+"-"+name+helloProperties.getSuffix();
}
}
HelloProperties 和Helloservice 進行屬性綁定的
package com.ming.springboot;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "com.ming")
public class HelloProperties {
private String prefix;
private String suffix;
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public String getSuffix() {
return suffix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
}
自動配置類
package com.ming.springboot;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConditionalOnWebApplication //web應用才生效
@EnableConfigurationProperties(HelloProperties.class)
public class HelloServiceAutoConfiguration {
@Autowired
HelloProperties helloProperties;
@Bean
public HelloService helloService(){
HelloService helloService = new HelloService();
helloService.setHelloProperties(helloProperties);
return helloService;
}
}
然后將這兩個模塊安裝到maven倉庫中
先安裝配置模塊因為starter模塊依賴配置模塊,別人調用我們的starter模塊就行了
然后將啟動器starter也裝到倉庫中,別人就可以用坐標引入了
在別的項目中引入自定義的啟動器starter
<!--引入自定義的starter-->
<dependency>
<groupId>com.ming.springboot</groupId>
<artifactId>ming-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
配置application.properties
#自定義啟動器starter com.ming.prefix=一起學習 com.ming.suffix=你學費了嗎
測試
@Autowired
HelloService helloService;
@Test
public void starterTest(){
String sayHello = helloService.sayHello("自定義starter");
System.out.println(sayHello);
}
以上就是“SpringBoot場景啟動器Starters怎么自定義”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。