亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解讀@Bean和@Autowired、@Resource之間的區(qū)別

 更新時(shí)間:2025年03月27日 09:29:05   作者:liudachu  
這篇文章主要介紹了@Bean和@Autowired、@Resource之間的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@Bean和@Autowired、@Resource的區(qū)別

@Bean 修飾的方法表示初始化一個(gè)對(duì)象并交由Spring IOC去管理,@Bean 只能和@Component @Repository @Controller @Service @Configration 配合使用.

@Autowired 可修飾變量和方法,用于完成自動(dòng)裝配(將需要的外部資源注入)

@Resource是java提供的注解,和@Autowired類似

@Bean和@Autowired的區(qū)別

網(wǎng)站上看到一個(gè)問題:

為什么@Autowired在這種情況下不能使用?

@SpringBootApplication
public class Application {

    @Autowired
    BookingService bookingService;

    public static void main(String[] args) {
        bookingService.book("Alice", "Bob", "Carol");
    }
}

但可以使用 @Bean

@SpringBootApplication
public class Application {

    @Bean
    BookingService bookingService() {
        return new BookingService();
    }

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
        BookingService bookingService = ctx.getBean(BookingService.class);
        bookingService.book("Alice", "Bob", "Carol");
    }
}

區(qū)別:

簡(jiǎn)單地解釋:

  • @Bean 告訴Spring’這是此類的一個(gè)實(shí)例,請(qǐng)保留該類,并在我詢問時(shí)將其還給我’。
  • @Autowired說“請(qǐng)給我一個(gè)該類的實(shí)例,例如,我@Bean之前用注釋創(chuàng)建的一個(gè)實(shí)例”。

那有意義嗎?在第一個(gè)示例中,你要讓Spring給你一個(gè)的實(shí)例BookingService,但是你從未創(chuàng)建一個(gè)實(shí)例,因此Spring沒有任何東西可以給你。在第二個(gè)示例中,你將創(chuàng)建一個(gè)的新實(shí)例BookingService,將其告知Spring,然后在該main()方法中要求其返回。

如果需要,可以從第二種main()方法中刪除另外兩行,并結(jié)合以下兩個(gè)示例:

@SpringBootApplication
public class Application {

  @Autowired
  BookingService bookingService;

  @Bean
  BookingService bookingService() {
    return new BookingService();
  }

  public static void main(String[] args) {
    bookingService.book("Alice", "Bob", "Carol");
  }
}

在這種情況下,@Bean注釋為Spring提供了BookingService,并加以@Autowired利用。

這將是一個(gè)毫無意義的示例,因?yàn)槟愣荚谕粋€(gè)類中使用它們,但是如果你@Bean在一個(gè)類中定義了該類,而在另一個(gè)類中定義了它,則它將變得很有用@Autowired。

@Resource和@Autowired的區(qū)別

  • @Autowired會(huì)先按byType去找,如果沒找到,則會(huì)按照byName去找
  • @Resource會(huì)先按byName去找,如果沒找到則會(huì)byType去找。如果設(shè)置了name屬性,則只會(huì)按byName去找,找不到就報(bào)錯(cuò)。
@Resource(name = "studentServiceImpl")
    private PersonService personService;

什么時(shí)候用Autowired、Resource?

  • Autowired:效率低下,先按類型查找,再按名字查找
  • Resource:按名字查找,后面要跟參數(shù)name,好處:當(dāng)有多個(gè)Impl實(shí)現(xiàn)類時(shí),可以通name快速找到

當(dāng)只有一個(gè)Impl實(shí)類的時(shí)候,隨便用哪個(gè)都差不多,>=2的時(shí)候,最好用@Resource,比@Autowired@Qualifier()效率高

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java web spring異步方法實(shí)現(xiàn)步驟解析

    Java web spring異步方法實(shí)現(xiàn)步驟解析

    這篇文章主要介紹了Java web spring異步方法實(shí)現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • IDEA 2023創(chuàng)建JSP項(xiàng)目的完整步驟教程

    IDEA 2023創(chuàng)建JSP項(xiàng)目的完整步驟教程

    這篇文章主要介紹了IDEA 2023創(chuàng)建JSP項(xiàng)目的完整步驟教程,創(chuàng)建項(xiàng)目需要經(jīng)過新建項(xiàng)目、設(shè)置項(xiàng)目名稱和路徑、選擇JDK版本、添加模塊和工件、配置Tomcat服務(wù)器等步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Java數(shù)據(jù)類型之細(xì)講char類型與編碼關(guān)系

    Java數(shù)據(jù)類型之細(xì)講char類型與編碼關(guān)系

    這幾天一直在復(fù)習(xí)Java基礎(chǔ)知識(shí),特地寫了一篇文章來做一下筆記,文中有非常詳細(xì)的圖文示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • java實(shí)現(xiàn)的二級(jí)聯(lián)動(dòng)菜單效果

    java實(shí)現(xiàn)的二級(jí)聯(lián)動(dòng)菜單效果

    這篇文章主要介紹了java實(shí)現(xiàn)的二級(jí)聯(lián)動(dòng)菜單效果,結(jié)合實(shí)例形式分析了java前臺(tái)頁(yè)面布局及與后臺(tái)交互構(gòu)造聯(lián)動(dòng)菜單的相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • Spring防止重復(fù)點(diǎn)擊的兩種實(shí)現(xiàn)方法

    Spring防止重復(fù)點(diǎn)擊的兩種實(shí)現(xiàn)方法

    頁(yè)面重復(fù)提交導(dǎo)致的問題就是數(shù)據(jù)被重復(fù)保存,我們經(jīng)常會(huì)誤觸點(diǎn)擊兩次,所以本文小編給大家介紹了Spring防止重復(fù)點(diǎn)擊的兩種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2025-01-01
  • mybatis分割字符串并循環(huán),實(shí)現(xiàn)in多個(gè)參數(shù)的操作

    mybatis分割字符串并循環(huán),實(shí)現(xiàn)in多個(gè)參數(shù)的操作

    這篇文章主要介紹了mybatis分割字符串并循環(huán),實(shí)現(xiàn)in多個(gè)參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理功能

    Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理功能

    Liquibase 是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)管理工具,它幫助你通過自動(dòng)化管理數(shù)據(jù)庫(kù)的變更、版本控制、和回滾,簡(jiǎn)化了開發(fā)中的數(shù)據(jù)庫(kù)遷移工作,這篇文章主要介紹了Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理,需要的朋友可以參考下
    2024-12-12
  • 詳解Java中LinkedHashMap

    詳解Java中LinkedHashMap

    本文主要介紹了Java中LinkedHashMap的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-05-05
  • 詳解堆排序算法原理及Java版的代碼實(shí)現(xiàn)

    詳解堆排序算法原理及Java版的代碼實(shí)現(xiàn)

    如果將堆理解為二叉樹,那么樹中任一非葉結(jié)點(diǎn)的關(guān)鍵字均不大于(或不小于)其左右孩子(若存在)結(jié)點(diǎn)的關(guān)鍵字,堆排序的時(shí)間復(fù)雜度為O(N*logN),這里我們就來詳解堆排序算法原理及Java版的代碼實(shí)現(xiàn)
    2016-06-06
  • java批量下載將多個(gè)文件(minio中存儲(chǔ))壓縮成一個(gè)zip包代碼示例

    java批量下載將多個(gè)文件(minio中存儲(chǔ))壓縮成一個(gè)zip包代碼示例

    在Java應(yīng)用程序中有時(shí)我們需要從多個(gè)URL地址下載文件,并將這些文件打包成一個(gè)Zip文件進(jìn)行批量處理或傳輸,這篇文章主要給大家介紹了關(guān)于java批量下載將多個(gè)文件(minio中存儲(chǔ))壓縮成一個(gè)zip包的相關(guān)資料,需要的朋友可以參考下
    2023-11-11

最新評(píng)論