摘要:核心注解講解最大的特點是無需配置文件,能自動掃描包路徑裝載并注入對象,并能做到根據下的包自動配置。所以最核心的個注解就是這是添加的一個注解,用來代替配置文件,所有這個配置文件里面能做到的事情都可以通過這個注解所在類來進行注冊。
最近面試一些 Java 開發(fā)者,他們其中有些在公司實際用過 Spring Boot, 有些是自己興趣愛好在業(yè)余自己學習過。然而,當我問他們 Spring Boot 最核心的 3 個注解是什么,令我失望的是鮮有人能答上來,這樣你能說你對 Spring Boot 很了解嗎?這可能還會給你減分!
你所需具備的基礎什么是 Spring Boot?
Spring Boot 核心配置文件詳解
Spring Boot 開啟的 2 種方式
Spring Boot 自動配置原理、實戰(zhàn)
Spring Boot 2.x 啟動全過程源碼分析
更多請在Java技術棧微信公眾號后臺回復關鍵字:boot。
Spring Boot 核心注解講解Spring Boot 最大的特點是無需 XML 配置文件,能自動掃描包路徑裝載并注入對象,并能做到根據 classpath 下的 jar 包自動配置。
所以 Spring Boot 最核心的 3 個注解就是:
1、@Configurationorg.springframework.context.annotation.Configuration
這是 Spring 3.0 添加的一個注解,用來代替 applicationContext.xml 配置文件,所有這個配置文件里面能做到的事情都可以通過這個注解所在類來進行注冊。
下面幾個相關注解也是非常重要的!
@Bean
用來代替 XML 配置文件里面的
@ImportResource
如果有些通過類的注冊方式配置不了的,可以通過這個注解引入額外的 XML 配置文件,有些老的配置文件無法通過 @Configuration 方式配置的非常管用。
@Import
用來引入額外的一個或者多個 @Configuration 修飾的配置文件類。
@SpringBootConfiguration
這個注解就是 @Configuration 注解的變體,只是用來修飾是 Spring Boot 配置而已,或者可利于 Spring Boot 后續(xù)的擴展,源碼如下。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration public @interface SpringBootConfiguration { }2、@ComponentScan
org.springframework.context.annotation.ComponentScan
這是 Spring 3.1 添加的一個注解,用來代替配置文件中的 component-scan 配置,開啟組件掃描,即自動掃描包路徑下的 @Component 注解進行注冊 bean 實例到 context 中。
另外,@ComponentScans 是可重復注解,即可以配置多個,用來配置注冊不同的子包。
關于重復注解,大家可以看這篇文章《JAVA元注解@interface詳解》。
3、@EnableAutoConfigurationorg.springframework.boot.autoconfigure.EnableAutoConfiguration
看全路徑就知道,這是自 Spring Boot 誕生時添加的注解,用來提供自動配置,上面的兩個都是 spring-context 包下的,不屬于 Spring Boot,所以 Spring 3.0 之后的去 XML 配置方式已經為 Spring Boot 埋下了伏筆!
自動配置更多詳細使用及實戰(zhàn)可以看這篇文章《Spring Boot自動配置原理、實戰(zhàn)》。
最后的彩蛋Spring Boot 最核心的 3 個注解介紹完了,大家可能會有疑問,為什么最主要的注解 @SpringBootApplication 不在其中?
留給大家的彩蛋,其實這個 @SpringBootApplication 注解就包含了以上 3 個主要注解,平時沒有自定義配置的需求,則使用 @SpringBootApplication 注解完全就可以了!
讓我們來看下 @SpringBootApplication 注解的源碼,一切明了!
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication { ... }
看完漲姿勢了嗎?
點贊轉發(fā)一下吧,以后碾壓面試官!
更多干貨推薦
1.史上最強 Java 中高級面試題整理
2.史上最強 Spring Boot & Cloud 教程整理
3.史上最強架構設計分布式技術干貨整理
本文原創(chuàng)首發(fā)于微信公眾號:Java技術棧(id:javastack),關注公眾號在后臺回復 "boot" 可獲取更多,轉載請原樣保留本信息。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71709.html
摘要:我又問微服務和有什么關系不用行不行然后對方就吱吱唔唔了可以打包部署,內部集成了。為什么說是自動配置的開啟注解是,其實它就是由下面三個注解組成的上面三個注解,前面兩個都是自帶的,和無關,所以說上面的回答的不是在點上。 最近棧長面試了不少人,其中不乏說對 Spring Boot 非常熟悉的,然后當我問到一些 Spring Boot 核心功能和原理的時候,沒人能說得上來,或者說不到點上,可以...
摘要:你如何理解中的可以理解為啟動器,它包含了一系列可以集成到應用里面的依賴包,你可以一站式集成及其他技術,而不需要到處找示例代碼和依賴包。如你想使用訪問數(shù)據庫,只要加入啟動器依賴就能使用了。 面試了一些人,簡歷上都說自己熟悉 Spring Boot, 或者說正在學習 Spring Boot,一問他們時,都只停留在簡單的使用階段,很多東西都不清楚,也讓我對面試者大失所望。 下面,我給大家總結...
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領域優(yōu)質創(chuàng)作者哪吒公眾號作者架構師奮斗者掃描主頁左側二維碼,加入群聊,一起學習一起進步歡迎點贊收藏留言前情提要無意間聽到領導們的談話,現(xiàn)在公司的現(xiàn)狀是碼農太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
摘要:代碼如下可以看到中一共有個依賴,其中只有是我手動加入的,用于單元測試。點擊項目啟動按鈕,效果如下好的程序必須配備完善的單元測試。測試結果如下可以看到紅圈框住的地方,出現(xiàn)這個綠色標志證明單元測試沒問題。 微信公眾號:一個優(yōu)秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 哎呦喂,按照以往的慣例今天周六我的安排應該是待在家學學貓叫啥的。但是今年這種日子就可能一去不復返了,沒...
閱讀 1626·2021-09-02 09:55
閱讀 1092·2019-08-30 13:19
閱讀 1393·2019-08-26 13:51
閱讀 1445·2019-08-26 13:49
閱讀 2372·2019-08-26 12:13
閱讀 452·2019-08-26 11:52
閱讀 1899·2019-08-26 10:58
閱讀 3084·2019-08-26 10:19