国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring五大類注解 || Bean的更簡(jiǎn)單存儲(chǔ)

這篇具有很好參考價(jià)值的文章主要介紹了Spring五大類注解 || Bean的更簡(jiǎn)單存儲(chǔ)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

前言:

五大類注解

@Controller

@Service

@Repository

@Component

@Configuration

JavaEE標(biāo)準(zhǔn)分層

阿里分層結(jié)構(gòu)

BeanName命名規(guī)則

方法注解

@Bean

注入方式取Bean

屬性注入

Setter注入

構(gòu)造方法注入

@Resource


前言:

? ? 使用Spring容器,為我們程序開(kāi)發(fā)帶來(lái)了很大的遍歷。那么我們就需要學(xué)習(xí)Spring帶來(lái)的一些機(jī)制,靈活的使用和理解這些機(jī)制,相信會(huì)有很多收獲。

五大類注解

@Controller

? ? 控制器,驗(yàn)證用戶請(qǐng)求數(shù)據(jù)的正確性(安保系統(tǒng))。直接和前端打交到,驗(yàn)證前端發(fā)來(lái)請(qǐng)求是否正確。

@Service

? ? 服務(wù),編排和調(diào)度具體執(zhí)行方法的(客服中心)。不會(huì)直接操作數(shù)據(jù)庫(kù),根據(jù)請(qǐng)求判斷具體調(diào)用哪個(gè)方法。

@Repository

? ? 數(shù)據(jù)持久層,直接和數(shù)據(jù)庫(kù)交互(執(zhí)行者)(DAO層 data access object)

@Component

? ? 組件(工具類)。為整個(gè)項(xiàng)目存放一些需要使用的組件,放在其他位置不是很合適。

@Configuration

? ? 配置項(xiàng)(項(xiàng)目中的一些配置)。當(dāng)項(xiàng)目啟動(dòng)時(shí),如果遇到哪個(gè)類被這個(gè)注解修飾,那么就會(huì)加載其中的一些配置。

注意:

? ? 1)上述五大類注解,xml配置的路徑中只要能查找到(遞歸查詢),其所修飾的類都會(huì)作為bean存儲(chǔ)到spring中(類名需不同)。當(dāng)然如果沒(méi)有上述五大類注解那么當(dāng)前類是不能作為bean存儲(chǔ)到spring中的。

? ? 2)五大類注解存在不同含義,當(dāng)我們看到某一個(gè)注解就可以明確這個(gè)了類是做什么的。

? ? 3)除了Component以外的其他四大類注解,都有Component注解的功能,也就是它的擴(kuò)展。(看源碼可發(fā)現(xiàn)其他四大類注解上面都有@Component注解)。

JavaEE標(biāo)準(zhǔn)分層

Spring五大類注解 || Bean的更簡(jiǎn)單存儲(chǔ)

阿里分層結(jié)構(gòu)

Spring五大類注解 || Bean的更簡(jiǎn)單存儲(chǔ)

注意:阿里分層結(jié)構(gòu)是對(duì)JavaEE標(biāo)準(zhǔn)分層在服務(wù)層(Service)做了一個(gè)擴(kuò)展。

BeanName命名規(guī)則

Spring五大類注解 || Bean的更簡(jiǎn)單存儲(chǔ)

注意:

? ? 逐級(jí)向下看源碼,發(fā)現(xiàn)Spring中使用的jdk中的方法來(lái)作為BeanName的命名規(guī)則。

? ? 1)默認(rèn)是第一個(gè)字母小寫。

? ? 2)如果前兩個(gè)字母的大寫,即BeanName就是原類名。

方法注解

@Bean

注意:

? ? 1)可以將方法的返回值添加到spring中。

? ? 2)方法注解必須搭配類注解使用,spring不會(huì)掃描所有類的方法,只掃描類注解下的方法(提升效率)

? ? 3)@Bean的命名規(guī)則,默認(rèn)是方法名,也可以起多個(gè)名字(name屬性),這個(gè)時(shí)候默認(rèn)的名字就無(wú)效了

? ? 4)控制注入順序(@Order注解)值越大,注入越遲,是類注解。如果對(duì)象一樣,名字也一樣(覆蓋式注入)

注入方式取Bean

@Autowired

屬性注入

? ? 屬性注入(spring會(huì)自動(dòng)的將spring對(duì)象注入到@Autowired修飾的屬性這里)

? ? 根據(jù)類型和名字(spring中的對(duì)象Id),來(lái)確定唯一的一個(gè)對(duì)象,

優(yōu)點(diǎn):

? ? 使用非常簡(jiǎn)單,只需要在屬性上加@Autowired注解即可。

缺點(diǎn):

? ? 1)無(wú)法實(shí)現(xiàn)final修飾的變量注入

? ? 2)兼容不好,只適用于IoC容器

? ? 3)風(fēng)險(xiǎn):因?yàn)閷懛ê?jiǎn)單,所以違背單一設(shè)計(jì)原則概率更大(可以注入多個(gè)對(duì)象,使用多個(gè)屬性)

Setter注入

? ? Setter注入(使用set方法,spring會(huì)將對(duì)象傳入到set方法中)(根據(jù)類名和對(duì)象名來(lái)確定)

優(yōu)點(diǎn):

? ? 符合單一設(shè)計(jì)原則(每個(gè)方法只能傳遞一個(gè)對(duì)象)

缺點(diǎn):

? ? 1)不能注入不可變對(duì)象(final修飾)

? ? 2)使用Setter注入的對(duì)象可能會(huì)被修改(可以調(diào)用set方法進(jìn)行修改參數(shù))

構(gòu)造方法注入

? ? 構(gòu)造方法注入(官方推薦的做法),使用構(gòu)造方法。

? ? 如果只有一個(gè)構(gòu)造方法,可以省略@Autowired,有多個(gè)構(gòu)造方法就不能省略了。

優(yōu)點(diǎn):

? ? 1)可以注入不可變對(duì)象(final修飾的)。

? ? 2)注入的對(duì)象不會(huì)改變,構(gòu)造方法只執(zhí)行一次。

? ? 3)構(gòu)造方法可以保證對(duì)象完全被初始化(類加載時(shí)就會(huì)執(zhí)行)。

? ? 4)通用性更好。

提出問(wèn)題:

? ? 為什么構(gòu)造方法可以注入不可變的對(duì)象而Setter和屬性注入?yún)s不可以呢?

? ? 答:final修飾的對(duì)象需要直接賦值或者在構(gòu)造方法里進(jìn)行初始化。類加載過(guò)程中就會(huì)執(zhí)行構(gòu)造方法,那么就可以初始化final修飾的對(duì)象。而Setter注入和屬性注入是spring實(shí)現(xiàn)的,執(zhí)行時(shí)機(jī)在類加載之后,所以就不能修改final修飾的對(duì)象。

@Resource

? ? 使用JDK 提供的的@Resource注解也可以實(shí)現(xiàn)對(duì)象的注入。

注意:

? ? 1)出身不同:@Autowired 來(lái)自于 Spring,而@Resource 來(lái)自于 JDK 的注解

? ? 2)使用時(shí)設(shè)置的參數(shù)不同:相比于 @Autowired 來(lái)說(shuō),@Resource ?持更多的參數(shù)設(shè)置,例如name 設(shè)置,根據(jù)名稱獲取 Bean。

? ? 3)@Autowired 可用于 Setter 注入、構(gòu)造函數(shù)注?和屬性注入,而@Resource 只能用于?Setter 注入和屬性注入,不能用于構(gòu)造函數(shù)注入

? ? 4)@Autowired先根據(jù)類型查找,之后再根據(jù)名稱查找。

? ? 5)@Resource先根據(jù)名稱查找,再根據(jù)類型查找。

小結(jié):

? ? 使用五大類注解和Bean的更簡(jiǎn)單存儲(chǔ)可以快速提升我們開(kāi)發(fā)的效率,學(xué)習(xí)框架我們要理解框架的本質(zhì)作用。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-422668.html

到了這里,關(guān)于Spring五大類注解 || Bean的更簡(jiǎn)單存儲(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring使用注解存儲(chǔ)Bean對(duì)象

    Spring使用注解存儲(chǔ)Bean對(duì)象

    在前一篇博客中( Spring項(xiàng)目創(chuàng)建與Bean的存儲(chǔ)與讀取(DL))介紹的是通過(guò)配置文件注冊(cè)對(duì)象從而存儲(chǔ)到 Spring 中,這種方式其實(shí)還是挺繁瑣的。 實(shí)際上,在使用學(xué)習(xí)使用 Spring過(guò)程中,當(dāng)我們要實(shí)現(xiàn)一個(gè)功能的時(shí)候,先應(yīng)該考慮的是有沒(méi)有相應(yīng)的注解是實(shí)現(xiàn)對(duì)應(yīng)功能的,Spring 中

    2024年02月16日
    瀏覽(21)
  • 【Spring】使用注解讀取和存儲(chǔ)Bean對(duì)象

    【Spring】使用注解讀取和存儲(chǔ)Bean對(duì)象

    ?哈嘍,哈嘍,大家好~ 我是你們的老朋友: 保護(hù)小周? ?? 談起Java 圈子里的框架,最年長(zhǎng)最耀眼的莫過(guò)于 Spring 框架啦,本期給大家?guī)?lái)的是:? 將對(duì)象存儲(chǔ)到 Spring 中、Bean 對(duì)象的命名規(guī)則、從Spring 中獲取bean 對(duì)象、注入的、@Autowired 與?@Resource 的區(qū)別、解決@Bean 方

    2024年02月13日
    瀏覽(23)
  • 【Spring】(三)Spring 使用注解存儲(chǔ)和讀取 Bean對(duì)象

    【Spring】(三)Spring 使用注解存儲(chǔ)和讀取 Bean對(duì)象

    前面的文章詳細(xì)的介紹了 Spring 對(duì)象的創(chuàng)建,以及對(duì) Bean 對(duì)象的存取操作,但是通過(guò)配置文件注冊(cè) Bean 對(duì)象以及使用 ApplicationContext 或 BeanFactory 的方式獲取 Bean 對(duì)象的操作就顯得格外的復(fù)雜。因此,本文主要就是詳細(xì)介紹了一種更加簡(jiǎn)單的方式來(lái)實(shí)現(xiàn)對(duì) Bean 對(duì)象更加簡(jiǎn)單的儲(chǔ)

    2024年02月14日
    瀏覽(19)
  • Spring更簡(jiǎn)單的存儲(chǔ)和讀取Bean對(duì)象

    Spring更簡(jiǎn)單的存儲(chǔ)和讀取Bean對(duì)象

    目錄 1.第一個(gè)Spring項(xiàng)目 2.存儲(chǔ)Bean對(duì)象 2.1 準(zhǔn)備工作 2.2?五大類注解 2.3?方法注解@Bean 2.4 Bean對(duì)象的默認(rèn)命名規(guī)則 3. 讀取Bean對(duì)象 3.1 屬性注入 3.2 setter注入 3.3 構(gòu)造方法注入 3.4 注入異常問(wèn)題 3.5 注入方式優(yōu)缺點(diǎn) 3.6 @Autowired和@Resource的區(qū)別 在學(xué)習(xí)更簡(jiǎn)單的方式來(lái)讀取和存儲(chǔ)Bean對(duì)象

    2024年02月03日
    瀏覽(23)
  • Spring(二):更簡(jiǎn)單的存儲(chǔ)與讀取 Bean

    Spring(二):更簡(jiǎn)單的存儲(chǔ)與讀取 Bean

    通過(guò)上一章的Spring,我們基本實(shí)現(xiàn)了Spring 的讀取與存儲(chǔ),但是在操作過(guò)程中,讀取與存儲(chǔ)并沒(méi)有那么得“簡(jiǎn)單” 一套流程還是很復(fù)雜,所以,本章來(lái)介紹更加簡(jiǎn)單得讀取與存儲(chǔ)。 在 Spring 中想要更簡(jiǎn)單的存儲(chǔ)和讀取對(duì)象的核?是使?注解,也就是我們接下來(lái)要學(xué)習(xí) Spring 中的

    2024年02月15日
    瀏覽(17)
  • Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象、使用注解存取對(duì)象

    Spring 更簡(jiǎn)單的讀取和存儲(chǔ)對(duì)象、使用注解存取對(duì)象

    我們知道物件都會(huì)隨著時(shí)代的發(fā)展,越變?cè)胶?jiǎn)單的。Spring 框架也不意外;我們?cè)谥按鎯?chǔ)Bean對(duì)象是在配置文件中添加 bean/bean 來(lái)存入Bean對(duì)象到Spring當(dāng)中的,使用那個(gè)類對(duì)象就要存入那個(gè),一個(gè)兩個(gè)類對(duì)象還好,如果需要的對(duì)象多了,就會(huì)非常麻煩?,F(xiàn)在,隨著 Spring 發(fā)展不用

    2024年02月11日
    瀏覽(23)
  • 探秘Spring中Bean的注解寶典:解讀存取Bean的相關(guān)注解及用法

    探秘Spring中Bean的注解寶典:解讀存取Bean的相關(guān)注解及用法

    將對(duì)象存儲(chǔ)在 Spring 中,有兩種注解類型可以實(shí)現(xiàn): 類注解:@Controller、@Service、@Repository、@Component、@Configuration 方法注解:@Bean 如下使用@Controller存儲(chǔ)Bean代碼: 使用獲取上下文的方法獲取上面存儲(chǔ)的對(duì)象 效果為 如下使用@Service存儲(chǔ)Bean代碼: 輸出結(jié)果跟@Controller一樣 如下使

    2024年02月16日
    瀏覽(16)
  • spring-注解開(kāi)發(fā)bean

    spring-注解開(kāi)發(fā)bean

    使用@Component定義bean 在配置文件中通過(guò)組建掃描加載bean 3.也可以通過(guò)不要配置文件,定義類,使用@Configuration,來(lái)代替配置文件 基于注解定義bean 1.@component,大部分的bean都可以通過(guò)這個(gè)來(lái)定義 1.1@Controller,控制層 1.2@Service,服務(wù)層 1.3@Repository,數(shù)據(jù)層 2.對(duì)于純注解的開(kāi)發(fā),還

    2024年02月13日
    瀏覽(25)
  • 11Spring IoC注解式開(kāi)發(fā)(上)(元注解/聲明Bean的注解/注解的使用/負(fù)責(zé)實(shí)例化Bean的注解)

    11Spring IoC注解式開(kāi)發(fā)(上)(元注解/聲明Bean的注解/注解的使用/負(fù)責(zé)實(shí)例化Bean的注解)

    注解的存在主要是為了簡(jiǎn)化XML的配置。Spring6倡導(dǎo)全注解開(kāi)發(fā)。 注解開(kāi)發(fā)的優(yōu)點(diǎn) :提高開(kāi)發(fā)效率 注解開(kāi)發(fā)的缺點(diǎn) :在一定程度上違背了OCP原則,使用注解的開(kāi)發(fā)的前提是需求比較固定,變動(dòng)較小。 自定義一個(gè)注解: 該注解上面修飾的注解包括:Target注解和Retention注解,這兩個(gè)注

    2024年01月21日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包