欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

為什么@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ū)別:

簡單地解釋:

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

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

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

@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利用。

這將是一個毫無意義的示例,因為你都在同一個類中使用它們,但是如果你@Bean在一個類中定義了該類,而在另一個類中定義了它,則它將變得很有用@Autowired

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

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

什么時候用Autowired、Resource?

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

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

總結

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

相關文章

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

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

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

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

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

    Java數(shù)據(jù)類型之細講char類型與編碼關系

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

    java實現(xiàn)的二級聯(lián)動菜單效果

    這篇文章主要介紹了java實現(xiàn)的二級聯(lián)動菜單效果,結合實例形式分析了java前臺頁面布局及與后臺交互構造聯(lián)動菜單的相關技巧,需要的朋友可以參考下
    2016-08-08
  • Spring防止重復點擊的兩種實現(xiàn)方法

    Spring防止重復點擊的兩種實現(xiàn)方法

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

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

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

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

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

    詳解Java中LinkedHashMap

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

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

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

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

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

最新評論