02 注解方式開(kāi)發(fā)bean

采用注解方式開(kāi)發(fā)bean可以省去get、set構(gòu)造方法同時(shí)不需要在xml去添加bean的屬性
1.Component注解,這個(gè)注解有兩種用法,一種是帶有name屬性值,即Component("xxxx"),一種是直接寫(xiě)這個(gè)注解@Component,這兩個(gè)的區(qū)別是:

第一種的注解在getbean的時(shí)候取的bianID是@component("xxxx")這個(gè)name屬性的值,否則報(bào)錯(cuò),第二種使用Component注解,并且不指定其屬性name的值,則bena的ID默認(rèn)為類(lèi)的名稱(chēng)的第一個(gè)字母小寫(xiě)的字符串

將之前的HelloWorld改用注解方式

2.Student和Phone類(lèi)改成@component注解

  • Lombok插件的使用
    1.Settings->plugins,搜索Lombok,安裝,重啟IDEA
    2.添加依賴
 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
            <scope>provided</scope>
        </dependency>

3.使用@Data注解,不用再寫(xiě)那些構(gòu)造方法、getter/setter,toString()了 使用@Value("")給簡(jiǎn)單類(lèi)型賦值.

  • Student類(lèi)


    IT)I)39FJVG}K}30J$361EG.png
  • Phone


    p.png
  • StudentApp


    ap.png
  • 運(yùn)行結(jié)果
    ![)J0A_TN~PLNJ@0]AQW}0AYW.png](https://upload-images.jianshu.io/upload_images/16513823-0c73795474878a4c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • 關(guān)于Lombok的進(jìn)一步學(xué)習(xí)(摘抄老師的)
    有哪些注解?
    @Data
    @Setter
    @Getter
    @Log4j
    @AllArgsConstructor
    @NoArgsConstructor
    @EqualsAndHashCode
    @NonNull
    @Cleanup
    @ToString
    @RequiredArgsConstructor
    @Value
    @SneakyThrows
    @Synchronized
    注解詳解
    @Data
    注解在 類(lèi) 上;提供類(lèi)所有屬性的 get 和 set 方法,此外還提供了equals、canEqual、hashCode、toString 方法。
    @Setter
    注解在 屬性 上;為單個(gè)屬性提供 set 方法; 注解在 類(lèi) 上,為該類(lèi)所有的屬性提供 set 方法, 都提供默認(rèn)構(gòu)造方法。
    @Getter
    注解在 屬性 上;為單個(gè)屬性提供 get 方法; 注解在 類(lèi) 上,為該類(lèi)所有的屬性提供 get 方法,都提供默認(rèn)構(gòu)造方法。
    @Log4j
    注解在 類(lèi) 上;為類(lèi)提供一個(gè) 屬性名為 log 的 log4j 日志對(duì)象,提供默認(rèn)構(gòu)造方法。
    @AllArgsConstructor
    注解在 類(lèi) 上;為類(lèi)提供一個(gè)全參的構(gòu)造方法,加了這個(gè)注解后,類(lèi)中不提供默認(rèn)構(gòu)造方法了。
    @NoArgsConstructor
    注解在 類(lèi) 上;為類(lèi)提供一個(gè)無(wú)參的構(gòu)造方法。
    @EqualsAndHashCode
    注解在 類(lèi) 上, 可以生成 equals、canEqual、hashCode 方法。
    @NonNull
    注解在 屬性 上,會(huì)自動(dòng)產(chǎn)生一個(gè)關(guān)于此參數(shù)的非空檢查,如果參數(shù)為空,則拋出一個(gè)空指針異常,也會(huì)有一個(gè)默認(rèn)的無(wú)參構(gòu)造方法。
    @Cleanup
    這個(gè)注解用在 變量 前面,可以保證此變量代表的資源會(huì)被自動(dòng)關(guān)閉,默認(rèn)是調(diào)用資源的 close() 方法,如果該資源有其它關(guān)閉方法,可使用 @Cleanup(“methodName”) 來(lái)指定要調(diào)用的方法,也會(huì)生成默認(rèn)的構(gòu)造方法
    @ToString
    這個(gè)注解用在 類(lèi) 上,可以生成所有參數(shù)的 toString 方法,還會(huì)生成默認(rèn)的構(gòu)造方法。
    @RequiredArgsConstructor
    這個(gè)注解用在 類(lèi) 上,使用類(lèi)中所有帶有 @NonNull 注解的或者帶有 final 修飾的成員變量生成對(duì)應(yīng)的構(gòu)造方法。
    @Value
    這個(gè)注解用在 類(lèi) 上,會(huì)生成含所有參數(shù)的構(gòu)造方法,get 方法,此外還提供了equals、hashCode、toString 方法。
    @SneakyThrows
    這個(gè)注解用在 方法 上,可以將方法中的代碼用 try-catch 語(yǔ)句包裹起來(lái),捕獲異常并在 catch 中用 Lombok.sneakyThrow(e) 把異常拋出,可以使用 @SneakyThrows(Exception.class) 的形式指定拋出哪種異常,也會(huì)生成默認(rèn)的構(gòu)造方法。
    @Synchronized
    這個(gè)注解用在 類(lèi)方法 或者 實(shí)例方法 上,效果和 synchronized 關(guān)鍵字相同,區(qū)別在于鎖對(duì)象不同,對(duì)于類(lèi)方法和實(shí)例方法,synchronized 關(guān)鍵字的鎖對(duì)象分別是類(lèi)的 class 對(duì)象和 this 對(duì)象,而 @Synchronized 的鎖對(duì)象分別是 私有靜態(tài) final 對(duì)象 lock 和 私有 final 對(duì)象 lock,當(dāng)然,也可以自己指定鎖對(duì)象,此外也提供默認(rèn)的構(gòu)造方法。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring從3.0開(kāi)始使用注解,到Spring5.0,已經(jīng)大量使用,注解的使用可以省卻大量的xml文件 1. H...
    陶然然_niit閱讀 588評(píng)論 0 7
  • 1、將上節(jié)課的HelloWorld項(xiàng)目用注解的方式實(shí)現(xiàn) Student類(lèi)采用@Component注解 HelloW...
    憶曦雪_閱讀 243評(píng)論 0 1
  • 1. HelloWorld為例 Hello類(lèi),采用@Component注解Hello.png HelloApp類(lèi),...
    六年的承諾閱讀 478評(píng)論 0 9
  • 1.傳統(tǒng)的Spring做法 1.1兩種做法 使用.xml文件來(lái)對(duì)bean進(jìn)行注入 配置aop 1.2缺點(diǎn) 如果所有...
    葉小慈呀閱讀 924評(píng)論 0 1
  • 2018年05月24 陰轉(zhuǎn)晴 今天豆豆又晚睡,現(xiàn)在都十點(diǎn)半了,還要看手機(jī)動(dòng)畫(huà)片。無(wú)奈我只好關(guān)掉手機(jī),想讓你早點(diǎn)...
    蔣劉敏閱讀 157評(píng)論 0 2

友情鏈接更多精彩內(nèi)容