Spring面試題:SpringBoot開發自定義starter

2020-12-14 Java猿猿
SpringBoot開發自定義starter

什麼是starter

Starter可以理解為一個可拔插式的插件,提供一系列便利的依賴描述符,您可以獲得所需的所有Spring和相關技術的一站式服務。應用程式只需要在maven中引入starter依賴,SpringBoot就能自動掃描到要加載的信息並啟動相應的默認配置。用一句話描述,就是springboot的場景啟動器。

下面是Spring官方提供的部分starter,全部的請參考官網:

官方starter

開始自定義starter前看看Springboot的AutoConfiguration機制。

Spring boot的AutoConfiguration機制

標記一個應用為Springboot應用,需要一個SpringBootApplication註解,下面是一個標準的spring boot啟動程序。

SpringBootApplication

SpringBootApplication註解又被一個EnableAutoConfiguration註解,EnableAutoConfiguration註解就是自動加載配置的關鍵。

SpringBootApplication註解

EnableAutoConfiguration是一個組合註解,用Import把AutoConfigurationImportSelector導入容器中,springboot啟動的時候會加載所有的selector並執行selectImports方法,這個方法會加載META-INF/spring.factories中配置的EnableAutoConfiguration,從而加載自動配置。

EnableAutoConfiguration

自定義Starter

1、創建一個工程id-spring-boot-starter,在pom文件中添加以下依賴,我們自定義的starter一般以xxx-spring-boot_starter命名。

添加依賴

2、定義一個映射配置新的的類IDProperties,添加註解ConfigurationProperties(prefix = "id"),我們的配置文件以id開頭,比如id.mathine-id=110

IDProperties

3、創建一個服務IDService,構造函數接收IDProperties,具體代碼

IDService

4、創建Configuration類IDConfiguration,添加註解Configuration和EnableConfigurationProperties,把當前類設置成配置類,並且注入IDProperties。

IDConfiguration

5、重要的一步,在resources目錄下創建META-INF目錄,並添加文件spring.factories。在這個文件中配置EnableAutoConfiguration,具體如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.idspringbootstarter.IDConfiguration

測試自定義的Starter

1、創建一個模塊,添加剛才開發好的依賴

添加依賴

2、在application.yml文件中添加我們定義的machineid,

machineid

3、創建一個IDController,把IDService注入進來,用IDService生產一個ID

IDController

4、啟動服務,進行測試

測試結果

相關焦點

  • 面試題:SpringBoot的啟動流程
    面試題:SpringBoot的啟動流程不管是用springboot開發還是面試,都需要對SpringBoot的啟動流程所了解。下面是一個標準的springboot程序springboot程序啟動程序執行SpringApplication.run方法,我們先看看run方法導致幹了什麼?
  • SpringBoot+GitLab+Docker+Jenkins實現持續集成下
    編寫SpringBoot項目Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。
  • springboot+springsecurity實現前後端分離簡單實現!
    通過各種方式學習springsecurity,在B站、騰訊課堂、網易課堂、慕課網沒有springsecurity的前後端分離的教學視頻,那我就去csdn去尋找springsecurity博客,發現幾個問題:要麼就是前後端不分離,要麼就是通過內存方式讀取數據,而不是通過資料庫的方式讀取數據,要麼就是大佬們給的代碼不全、把代碼講的太繞,關鍵部分沒有注釋
  • Rocket-API 版本更新,基於 Spring Boot 的 API 敏捷開發框架
    處理 mongo 下 findAll 返回數據最多 101 條記錄問題 處理 #{${}} 變量值篏套問題 db.count() 計數優化 添加全局變量 Utils 中的 pasreToString, pasreToObject 方法來實現對象與 string 的轉換概述"Rocket-API" 基於 spring
  • Java經典面試題Spring是什麼 Spring框架入門詳解
    這是初級開發人員必然被問道的問題,如果你不懂Spring你就無法從事這一行業,此處僅限技術人員,公司的繼承人等其他個例不受此限制。那麼Spring是什麼呢,Spring遵循分層的結構思想什麼什麼實現了高內聚低耦合巴拉巴拉一大堆,咬文嚼字不是我的強項,直接開幹,讓你們看看Spring到底是什麼東西。
  • 全網最細緻的SpringBoot實戰教程,超適合新手小白入坑學習
    一、Spring Boot 入門Spring Boot 來簡化Spring應用開發的一個框架,約定大於配置Spring Boot 的底層用的就是Spring訪問官網:spring.io 再點擊projects
  • 繼「劉強東」之後京東的第二位程式設計師「呂科」spring面試題講解
    ,但是具體面試內容是什麼,2020年7月1日,京東的第二位程式設計師「呂科」講解最新面試信息:一面:也就是基礎面試二面:資料庫基礎面試三面:綜合面試四面:HR面試今天講解的是京東spring面試問題答案及spring常見面試問題答案1、什麼是Spring框架?
  • 面試刷題:Spring Bean的生命周期?
    spring是Java軟體開發的事實標準。今天的問題是:springBean的生命周期是怎樣的?答:spring最基礎的能力是IOC(依賴注入),AOP(面向切面編程),ioc改善了模塊之間的耦合問題,依賴注入的方式:set方法,構造方法,成員變量+ @Autowire ;Bean的管理是IOC的主要功能。
  • Springboot+MybatisPlus高效實現增刪改查
    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>
  • 從零搭建 Spring Cloud 服務(超詳細)
    另外SpringCloud需要基於springboot搭建。--引入springboot-parent父項目--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId
  • 詳解SpringCloud中RabbitMQ消息隊列原理及配置,一篇就夠!
    rabbitmq已經被spring-boot做了整合訪問實現。spring cloud也對springboot做了整合邏輯。所以rabbitmq的依賴可以在spring cloud中直接使用。 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId>
  • SpringBoot第一個程序,HelloWorld
    1、首先打開我們的IDEA工具,點擊Create New Project新建一個項目2、點擊左側的Spring Initializr,選擇相應的jdk版本信息,默認的Default打上小點點,點擊next3、==細節==:在最下面的package的地方默認是com.huagege.springboot
  • spring+微服務+jvm+性能調優,前美團架構師直接跪了!這就很nice
    上半年過去了,聽得最多的就是:Java 面試太TM難了。僧多粥少基本是現在 Java 人面臨的最大難題,去稍大一點的公司面試,競爭對手至少幾十人。想從人群中脫穎而出,有些時候靠的未必是技術能力。因為大家的能力,其實都差不多(除去大神級別的 Java 程式設計師)。
  • springcloud五大組件
    首先我們來看springcloud是什麼?它是微服務架構集大成者,基於springboot構建,可以將一系列優秀組件進行完美整合。對熟悉的程式設計師來說,上手不麻煩,對新手來說,就需要了解springcloud架構再去學習。
  • 手擼rpc框架,並基於spring進行二次註解開發
    這是我返回給你的結果";該框架包括簡單示例都已上傳至github,連結自取:自定義rpc框架三、自定義rpc框架(一)、代碼架構rpc_apirpc_client:自定義rpc框架客戶端部分,實現了rpc客戶端部分邏輯。
  • 公司來了一位前阿里大神,分享8面阿里面經(Java崗面試題集錦)
    下面我說一下自己面試的流程:剛開始的時候面試官會讓自我介紹,閒聊一小會(主要是為了緩解緊張的氣氛),下面就進入了正題(以下面試題都是涉及到的,沒有一一都記清楚,記了個大概):基礎篇(面試完後期又整理了一下)
  • 2020Web前端開發常見面試題匯總-開課吧
    ,可以幫助自己順利通過面試哦。以下是小編為大家整理的web前端面試題及答案,供各位參考。Web前端面試題:異步請求適合在哪個生命周期調?解析:官實例的異步請求是在mounted命周期中調的,實際上也可以在created命周期中調。
  • Spring Boot與Shiro整合實現用戶認證
    自定義Realm類package com.itheima.shiro;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.AuthenticationInfo
  • 15個近期JavaScript高頻手寫面試題
    作為前端開發工程師,JavaScript是我們技術能力中最重要的一環,最近結束了面試的高峰期,來給大家總結了一下最近比較高頻出現的15道JavaScript手寫面試題,一起來肝吧!
  • 面試刷題容易被忽視的點:Spring系列+Mybatis+ZK+ES+MQ
    有效的準備面試,無疑是獲得高薪水的關鍵。無論你是近期打算跳槽,還是金九銀十準備跳槽,我想此刻開始準備面試,無疑是最明智的選擇,所以小編整理匯總了大量的乾貨面試題,下面一起來看吧:Spring面試題什麼是Spring框架?Spring框架有哪些主要模塊?