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