国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
Spring Boot Starter是什麼?
以前傳統(tǒng)的做法
使用Spring Boot Starter 之後
starter 的理念:
starter 的實(shí)作:
建立Spring Boot Starter步驟
具體操作步驟:
建立業(yè)務(wù)類別:
測(cè)試如下:
首頁 Java java教程 SpringCloud-Spring?Boot?Starter使用測(cè)試實(shí)例分析

SpringCloud-Spring?Boot?Starter使用測(cè)試實(shí)例分析

May 16, 2023 am 11:10 AM
springboot springcloud starter

Spring Boot Starter是什麼?

Spring Boot Starter 是在 SpringBoot 元件中被提出來的一種概念、簡(jiǎn)化了很多煩瑣的配置、透過引入各種 Spring Boot Starter 套件可以快速搭建一個(gè)專案的鷹架。

例如我們常用的一些:

spring-boot-starter-web:

spring-boot-starter-data-redis:

spring-boot-starter-data-mongodb:

spring-boot-starter-data-jpa:

spring-boot-starter-activemq:

整體來說就是starter 是一種對(duì)依賴的合成。

以前傳統(tǒng)的做法

在沒有starter 之前,傳統(tǒng)的SSM專案、假如我想要在Spring 中使用jpa,可能需要做以下操作:

首先在Maven 中引入使用的資料庫(kù)的依賴>>然後引入jpa 的依賴>>在xml中配置一些屬性資訊>>調(diào)試呼叫直到可以正常運(yùn)行。

上面這樣的操作會(huì)有一些問題、例如:

如果流程比較繁瑣,這樣一步步操作會(huì)增加出錯(cuò)的可能性。

在配置的時(shí)候也會(huì)劃掉大量的時(shí)間、對(duì)於新手和小白不太友善。

使用Spring Boot Starter 之後

starter 的主要目的就是為了解決上面的這些問題

starter 的理念:

starter 會(huì)把所有用到的依賴都給包含進(jìn)來,避免了開發(fā)者自己引入依賴所帶來的麻煩。需要注意的是不同的starter 是為了解決不同的依賴,所以它們內(nèi)部的實(shí)作可能會(huì)有很大的差異,例如jpa 的starter 和Redis 的starter 可能實(shí)作就不一樣,這是因?yàn)閟tarter 的本質(zhì)在於synthesize,這是一層在邏輯層面的抽象,也許這種理念有點(diǎn)類似Docker,因?yàn)樗鼈兌际窃谧鲆粋€(gè)「包裝」 的操作,如果你知道Docker 是為了解決什麼問題的,也許你可以用Docker 和starter做一個(gè)類比。

starter 的實(shí)作:

雖然不同的 starter 實(shí)作起來各有差異,但是他們基本上都會(huì)使用到兩個(gè)相同的內(nèi)容:ConfigurationProperties 和 AutoConfiguration。因?yàn)镾pring Boot 堅(jiān)信「約定大於配置」 這個(gè)理念,所以我們使用ConfigurationProperties 來保存我們的配置,而這些配置都可以有一個(gè)預(yù)設(shè)值,即在我們沒有主動(dòng)覆寫原始配置的情況下,預(yù)設(shè)值就會(huì)生效,這在很多情況下是非常有用的。除此之外,starter 的 ConfigurationProperties 也讓所有的配置屬性被聚集到一個(gè)檔案中(一般在 resources 目錄下的 application.properties),這樣我們就告別了 Spring 專案中 XML 地獄。

SpringCloud-Spring?Boot?Starter使用測(cè)試實(shí)例分析

上面的starter 依賴的jar 和我們自己手動(dòng)配置的時(shí)候依賴的jar 並沒有什麼不同,所以我們可以認(rèn)為starter 其實(shí)就是把這一些繁瑣的設(shè)定操作交給了自己,而把簡(jiǎn)單交給了使用者。除了幫助使用者移除了繁瑣的建置操作,在 “約定大於配置” 的理念下,ConfigurationProperties 還幫助使用者減少了無謂的配置操作。並且因?yàn)?code>application.properties檔案的存在,即使需要自訂配置,所有的配置也只需要在一個(gè)檔案中進(jìn)行,使用起來非常方便。採(cǎi)用的starter都上面都跟大家列出來了。

建立Spring Boot Starter步驟

建立starter 專案

建立ConfigurationProperties 用來儲(chǔ)存設(shè)定資訊

建立AutoConfiguration,引用定義好的設(shè)定資訊

在AutoConfiguration 實(shí)作所有starter 應(yīng)該完成的操作,並且把這個(gè)類別加入spring.factories 設(shè)定檔中進(jìn)行宣告

打包項(xiàng)在SpringBoot 專案中引入該專案依賴,然後就可以使用該starter了

具體操作步驟:

在idea新建一個(gè)starter專案、直接執(zhí)行下一步即可產(chǎn)生專案。

SpringCloud-Spring?Boot?Starter使用測(cè)試實(shí)例分析

在xml中加入以下設(shè)定檔:

<?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>
    <artifactId>http-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
 
    <!-- 自定義starter都應(yīng)該繼承自該依賴 -->
    <!-- 如果自定義starter本身需要繼承其它的依賴,可以參考 https://stackoverflow.com/a/21318359 解決 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starters</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>
 
    <dependencies>
        <!-- 自定義starter依賴此jar包 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- lombok用于自動(dòng)生成get、set方法 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>
    </dependencies>
 
</project>

#建立proterties 類別來保存設(shè)定資訊

@ConfigurationProperties(prefix = "http") 
@Getter
public class HttpProperties {
 
    // 如果配置文件中配置了http.url屬性,則該默認(rèn)屬性會(huì)被覆蓋
    private String url = "https://blog.csdn.net/weixin_39709134?type=blog";
 
}

建立業(yè)務(wù)類別:

@Setter
@Getter
public class HttpClient {
 
    private String url;
 
    // 根據(jù)url獲取網(wǎng)頁數(shù)據(jù)
    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";
    }
 
}

這個(gè)業(yè)務(wù)類別包含了url屬性和一個(gè)getHtml方法,用於取得一個(gè)網(wǎng)頁HTML 資料

建立AutoConfiguration

@Configuration
@EnableConfigurationProperties(HttpProperties.class)
public class HttpAutoConfiguration {
 
    @Resource
    private HttpProperties properties; // 使用配置
 
    // 在Spring上下文中創(chuàng)建一個(gè)對(duì)象
    @Bean
    @ConditionalOnMissingBean
    public HttpClient init() {
        HttpClient client = new HttpClient();
 
        String url = properties.getUrl();
        client.setUrl(url);
        return client;
    }
 
}

在上面的AutoConfiguration 中我們實(shí)作了自己要求:在Spring 的上下文中建立了一個(gè)HttpClient 類別的bean,並且我們把properties 中的一個(gè)參數(shù)賦給了該bean。

最後,我們?cè)?code>resources資料夾下新建目錄META-INF,在目錄中新建spring.factories文件,並且在spring.factories中配置AutoConfiguration:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.nosuchfield.httpstarter.HttpAutoConfiguration

最后使用 Maven 打包該項(xiàng)目。之后創(chuàng)建一個(gè) SpringBoot 項(xiàng)目,在項(xiàng)目中添加我們之前打包的 starter 作為依賴,然后使用 SringBoot 來運(yùn)行我們的 starter

測(cè)試如下:

@Component
public class RunIt {
 
    @Resource
    private HttpClient httpClient;
 
    public void hello() {
        System.out.println(httpClient.getHtml());
    }
 
}

SpringCloud-Spring?Boot?Starter使用測(cè)試實(shí)例分析

之后可以在 application.properties中修改配置來進(jìn)行測(cè)試證明 properties 中的數(shù)據(jù)確實(shí)被覆蓋

以上是SpringCloud-Spring?Boot?Starter使用測(cè)試實(shí)例分析的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
Springboot怎麼整合Jasypt實(shí)現(xiàn)設(shè)定檔加密 Springboot怎麼整合Jasypt實(shí)現(xiàn)設(shè)定檔加密 Jun 01, 2023 am 08:55 AM

Jasypt介紹Jasypt是一個(gè)java庫(kù),它允許開發(fā)員以最少的努力為他/她的專案添加基本的加密功能,並且不需要對(duì)加密工作原理有深入的了解用於單向和雙向加密的高安全性、基於標(biāo)準(zhǔn)的加密技術(shù)。加密密碼,文本,數(shù)字,二進(jìn)位檔案...適合整合到基於Spring的應(yīng)用程式中,開放API,用於任何JCE提供者...添加如下依賴:com.github.ulisesbocchiojasypt-spring-boot-starter2. 1.1Jasypt好處保護(hù)我們的系統(tǒng)安全,即使程式碼洩露,也可以保證資料來源的

怎麼在SpringBoot中使用Redis實(shí)現(xiàn)分散式鎖 怎麼在SpringBoot中使用Redis實(shí)現(xiàn)分散式鎖 Jun 03, 2023 am 08:16 AM

一、Redis實(shí)現(xiàn)分散式鎖原理為什麼需要分散式鎖在聊分散式鎖之前,有必要先解釋一下,為什麼需要分散式鎖。與分散式鎖相對(duì)就的是單機(jī)鎖,我們?cè)趯懚鄨?zhí)行緒程式時(shí),避免同時(shí)操作一個(gè)共享變數(shù)產(chǎn)生資料問題,通常會(huì)使用一把鎖來互斥以保證共享變數(shù)的正確性,其使用範(fàn)圍是在同一個(gè)進(jìn)程中。如果換做是多個(gè)進(jìn)程,需要同時(shí)操作一個(gè)共享資源,如何互斥?現(xiàn)在的業(yè)務(wù)應(yīng)用通常是微服務(wù)架構(gòu),這也意味著一個(gè)應(yīng)用會(huì)部署多個(gè)進(jìn)程,多個(gè)進(jìn)程如果需要修改MySQL中的同一行記錄,為了避免操作亂序?qū)е麦v數(shù)據(jù),此時(shí)就需要引入分佈式鎖了。想要實(shí)現(xiàn)分

SpringBoot怎麼自訂Redis實(shí)作快取序列化 SpringBoot怎麼自訂Redis實(shí)作快取序列化 Jun 03, 2023 am 11:32 AM

1.自訂RedisTemplate1.1、RedisAPI預(yù)設(shè)序列化機(jī)制基於API的Redis快取實(shí)作是使用RedisTemplate範(fàn)本進(jìn)行資料快取操作的,這裡開啟RedisTemplate類,查看該類別的源碼資訊publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations,BeanClassLoaderAware{//聲明了value的各種序列化方式,初始值為空@NullableprivateRedisSe

springboot讀取檔案打成jar包後存取不到怎麼解決 springboot讀取檔案打成jar包後存取不到怎麼解決 Jun 03, 2023 pm 04:38 PM

springboot讀取文件,打成jar包後訪問不到最新開發(fā)出現(xiàn)一種情況,springboot打成jar包後讀取不到文件,原因是打包之後,文件的虛擬路徑是無效的,只能通過流去讀取。文件在resources下publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

SpringBoot怎麼整合Redisson實(shí)現(xiàn)延遲隊(duì)列 SpringBoot怎麼整合Redisson實(shí)現(xiàn)延遲隊(duì)列 May 30, 2023 pm 02:40 PM

使用場(chǎng)景1、下單成功,30分鐘未支付。支付超時(shí),自動(dòng)取消訂單2、訂單簽收,簽收後7天未進(jìn)行評(píng)估。訂單超時(shí)未評(píng)價(jià),系統(tǒng)預(yù)設(shè)好評(píng)3、下單成功,商家5分鐘未接單,訂單取消4、配送超時(shí),推播簡(jiǎn)訊提醒…對(duì)於延時(shí)比較長(zhǎng)的場(chǎng)景、即時(shí)性不高的場(chǎng)景,我們可以採(cǎi)用任務(wù)調(diào)度的方式定時(shí)輪詢處理。如:xxl-job今天我們採(cǎi)

Springboot+Mybatis-plus不使用SQL語句進(jìn)行多表新增怎麼實(shí)現(xiàn) Springboot+Mybatis-plus不使用SQL語句進(jìn)行多表新增怎麼實(shí)現(xiàn) Jun 02, 2023 am 11:07 AM

在Springboot+Mybatis-plus不使用SQL語句進(jìn)行多表添加操作我所遇到的問題準(zhǔn)備工作在測(cè)試環(huán)境下模擬思維分解一下:創(chuàng)建出一個(gè)帶有參數(shù)的BrandDTO對(duì)像模擬對(duì)後臺(tái)傳遞參數(shù)我所遇到的問題我們都知道,在我們使用Mybatis-plus中進(jìn)行多表操作是極其困難的,如果你不使用Mybatis-plus-join這一類的工具,你只能去配置對(duì)應(yīng)的Mapper.xml文件,配置又臭又長(zhǎng)的ResultMap,然後再寫對(duì)應(yīng)的sql語句,這種方法雖然看上去很麻煩,但具有很高的靈活性,可以讓我們

SpringBoot與SpringMVC的比較及差別分析 SpringBoot與SpringMVC的比較及差別分析 Dec 29, 2023 am 11:02 AM

SpringBoot和SpringMVC都是Java開發(fā)中常用的框架,但它們之間有一些明顯的差異。本文將探究這兩個(gè)框架的特點(diǎn)和用途,並對(duì)它們的差異進(jìn)行比較。首先,我們來了解一下SpringBoot。 SpringBoot是由Pivotal團(tuán)隊(duì)開發(fā)的,它旨在簡(jiǎn)化基於Spring框架的應(yīng)用程式的建立和部署。它提供了一種快速、輕量級(jí)的方式來建立獨(dú)立的、可執(zhí)行

SpringBoot中的@Import註解怎麼使用 SpringBoot中的@Import註解怎麼使用 May 31, 2023 pm 06:25 PM

一、@Import引入普通類別@Import引入普通的類別可以幫助我們把普通的類別定義為Bean。 @Import可以加入在@SpringBootApplication(啟動(dòng)類別)、@Configuration(配置類別)、@Component(組件類別)對(duì)應(yīng)的類別上。注意:@RestController、@Service、@Repository都屬於@Component@SpringBootApplication@Import(ImportBean.class)//透過@Import註解把ImportBean

See all articles