真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot自定義starter實(shí)例代碼

一、簡介

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括曾都網(wǎng)站建設(shè)、曾都網(wǎng)站制作、曾都網(wǎng)頁制作以及曾都網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,曾都網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到曾都省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

SpringBoot 最強(qiáng)大的功能就是把我們常用的場景抽取成了一個(gè)個(gè)starter(場景啟動(dòng)器),我們通過引入SpringBoot 為我提供的這些場景啟動(dòng)器,我們?cè)龠M(jìn)行少量的配置就能使用相應(yīng)的功能。即使是這樣,SpringBoot也不能囊括我們所有的使用場景,往往我們需要自定義starter,來簡化我們對(duì)SpringBoot的使用。

下面話不多說了,來一起看看詳細(xì)的介紹吧

二、如何自定義starter

1.實(shí)例

如何編寫自動(dòng)配置 ?

我們參照@WebMvcAutoConfiguration為例,我們看看需要準(zhǔn)備哪些東西,下面是WebMvcAutoConfiguration的部分代碼:

@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurerAdapter.class})
@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
@AutoConfigureOrder(-2147483638)
@AutoConfigureAfter({DispatcherServletAutoConfiguration.class, ValidationAutoConfiguration.class})
public class WebMvcAutoConfiguration {

	@Import({WebMvcAutoConfiguration.EnableWebMvcConfiguration.class})
 @EnableConfigurationProperties({WebMvcProperties.class, ResourceProperties.class})
 public static class WebMvcAutoConfigurationAdapter extends WebMvcConfigurerAdapter {

 @Bean
 @ConditionalOnBean({View.class})
 @ConditionalOnMissingBean
 public BeanNameViewResolver beanNameViewResolver() {
  BeanNameViewResolver resolver = new BeanNameViewResolver();
  resolver.setOrder(2147483637);
  return resolver;
 }
 }
}

我們可以抽取到我們自定義starter時(shí),同樣需要的一些配置。

@Configuration //指定這個(gè)類是一個(gè)配置類
@ConditionalOnXXX //指定條件成立的情況下自動(dòng)配置類生效
@AutoConfigureOrder //指定自動(dòng)配置類的順序
@Bean //向容器中添加組件
@ConfigurationProperties //結(jié)合相關(guān)xxxProperties來綁定相關(guān)的配置
@EnableConfigurationProperties //讓xxxProperties生效加入到容器中

自動(dòng)配置類要能加載需要將自動(dòng)配置類,配置在META-INF/spring.factories中
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\

模式

我們參照 spring-boot-starter 我們發(fā)現(xiàn)其中沒有代碼:

SpringBoot自定義starter實(shí)例代碼

我們?cè)诳此膒om中的依賴中有個(gè) springboot-starter


	org.springframework.boot
	spring-boot-starter

我們?cè)倏纯?spring-boot-starter 有個(gè) spring-boot-autoconfigure


	org.springframework.boot
	spring-boot-autoconfigure

關(guān)于web的一些自動(dòng)配置都寫在了這里 ,所以我們有以下總結(jié):

啟動(dòng)器starter只是用來做依賴管理
需要專門寫一個(gè)類似spring-boot-autoconfigure的配置模塊
用的時(shí)候只需要引入啟動(dòng)器starter,就可以使用自動(dòng)配置了

命名規(guī)范

官方命名空間

  • 前綴:spring-boot-starter-
  • 模式:spring-boot-starter-模塊名
  • 舉例:spring-boot-starter-web、spring-boot-starter-jdbc

自定義命名空間

  • 后綴:-spring-boot-starter
  • 模式:模塊-spring-boot-starter
  • 舉例:mybatis-spring-boot-starter

三、自定義starter實(shí)例

我們需要先創(chuàng)建兩個(gè)工程 hello-spring-boot-starter 和 hello-spring-boot-starter-autoconfigurer

1. hello-spring-boot-starter

1.pom.xml

<?xml version="1.0" encoding="UTF-8"?>

	4.0.0

	com.gf
	hello-spring-boot-starter
	0.0.1-SNAPSHOT
	jar

	hello-spring-boot-starter

	
	
		
		
			com.gf
			hello-spring-boot-starter-autoconfigurer
			0.0.1-SNAPSHOT
		
	

同時(shí)刪除 啟動(dòng)類、resources下的文件,test文件。

2. hello-spring-boot-starter-autoconfigurer

1. pom.xml

<?xml version="1.0" encoding="UTF-8"?>

	4.0.0

	com.gf
	hello-spring-boot-starter-autoconfigurer
	0.0.1-SNAPSHOT
	jar

	hello-spring-boot-starter-autoconfigurer
	Demo project for Spring Boot

	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.9.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
	

	
		
		
			org.springframework.boot
			spring-boot-starter
		

	

2. HelloProperties

package com.gf.service;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "gf.hello")
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;
 }
}

3. HelloService

package com.gf.service;


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();
 }
}

4. HelloServiceAutoConfiguration

package com.gf.service;

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應(yīng)該生效
@EnableConfigurationProperties(HelloProperties.class)
public class HelloServiceAutoConfiguration {

 @Autowired
 HelloProperties helloProperties;

 @Bean
 public HelloService helloService() {
  HelloService service = new HelloService();
  service.setHelloProperties( helloProperties );
  return service;
 }
}

5. spring.factories

在 resources 下創(chuàng)建文件夾 META-INF 并在 META-INF 下創(chuàng)建文件 spring.factories ,內(nèi)容如下:

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.gf.service.HelloServiceAutoConfiguration

到這兒,我們的配置自定義的starter就寫完了 ,我們把 hello-spring-boot-starter-autoconfigurer、hello-spring-boot-starter 安裝成本地jar包。

三、測(cè)試自定義starter

我們創(chuàng)建個(gè)項(xiàng)目 hello-spring-boot-starter-test,來測(cè)試系我們寫的stater。

1. pom.xml

<?xml version="1.0" encoding="UTF-8"?>

	4.0.0

	com.gf
	hello-spring-boot-starter-test
	0.0.1-SNAPSHOT
	jar

	hello-spring-boot-starter-test
	Demo project for Spring Boot

	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.9.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		

		
		
			com.gf
			hello-spring-boot-starter
			0.0.1-SNAPSHOT
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

2. HelloController

package com.gf.controller;

import com.gf.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

 @Autowired
 HelloService helloService;

 @GetMapping("/hello/{name}")
 public String hello(@PathVariable(value = "name") String name) {
  return helloService.sayHello( name + " , " );
 }
}

3. application.properties

gf.hello.prefix = hi
gf.hello.suffix = what's up man ?

我運(yùn)行項(xiàng)目訪問 http://127.0.0.1:8080/hello/zhangsan,結(jié)果如下:

hi-zhangsan , what's up man ?

源碼下載: https://github.com/gf-huanchupk/SpringBootLearning

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。


網(wǎng)站標(biāo)題:SpringBoot自定義starter實(shí)例代碼
當(dāng)前路徑:http://weahome.cn/article/jjisho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部