最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

@Bean 修飾的方法表示初始化一個(gè)對象并交由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ū)別:

簡單地解釋:

  • @Bean 告訴Spring’這是此類的一個(gè)實(shí)例,請保留該類,并在我詢問時(shí)將其還給我’。
  • @Autowired說“請給我一個(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實(shí)現(xiàn)冒泡排序

    Java實(shí)現(xiàn)冒泡排序

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)冒泡排序,把一列數(shù)組按從小到大或從大到小排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java分布式鎖幾種常見的實(shí)現(xiàn)方式

    Java分布式鎖幾種常見的實(shí)現(xiàn)方式

    在java的分布式系統(tǒng)中,有時(shí)候會(huì)出現(xiàn)不同的服務(wù)操作同一個(gè)資源的情況,如交易系統(tǒng)和充值系統(tǒng)都要操作用戶賬戶,分布式鎖為解決分布式系統(tǒng)中多個(gè)應(yīng)用同時(shí)訪問同一個(gè)資源的問題,這篇文章主要介紹了Java分布式鎖幾種常見的實(shí)現(xiàn)方式,需要的朋友可以參考下
    2025-07-07
  • java中mybatis和hibernate的用法總結(jié)

    java中mybatis和hibernate的用法總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于java中mybatis和hibernate的用法總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • Java中List集合去重的幾種方式詳細(xì)解析

    Java中List集合去重的幾種方式詳細(xì)解析

    這篇文章主要介紹了Java中List集合去重的幾種方式詳細(xì)解析,在日常的業(yè)務(wù)開發(fā)中,偶爾會(huì)遇到需要將 List 集合中的重復(fù)數(shù)據(jù)去除掉的場景,那么今天我們來看看幾種LIst集合去重的方式,需要的朋友可以參考下
    2023-11-11
  • Spring基于注解讀取外部配置文件

    Spring基于注解讀取外部配置文件

    這篇文章主要介紹了Spring基于注解讀取外部配置文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 修改及反編譯可運(yùn)行Jar包實(shí)現(xiàn)過程詳解

    修改及反編譯可運(yùn)行Jar包實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了如何修改及反編譯可運(yùn)行Jar包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Springboot實(shí)例講解實(shí)現(xiàn)專業(yè)材料認(rèn)證管理系統(tǒng)流程

    Springboot實(shí)例講解實(shí)現(xiàn)專業(yè)材料認(rèn)證管理系統(tǒng)流程

    這是一個(gè)基于java的畢業(yè)設(shè)計(jì)項(xiàng)目,畢設(shè)課題為springboot框架的知識產(chǎn)權(quán)服務(wù)平臺系統(tǒng),是一個(gè)采用b/s結(jié)構(gòu)的javaweb項(xiàng)目,需要的朋友可以參考下
    2022-06-06
  • Java集合中的Set之LinkedHashSet詳解

    Java集合中的Set之LinkedHashSet詳解

    這篇文章主要介紹了Java集合中的Set之LinkedHashSet詳解,LinkedHashSet是Set集合的一個(gè)實(shí)現(xiàn),具有set集合不重復(fù)的特點(diǎn),同時(shí)具有可預(yù)測的迭代順序,也就是我們插入的順序,并且linkedHashSet是一個(gè)非線程安全的集合,需要的朋友可以參考下
    2023-09-09
  • Java SPI在數(shù)據(jù)庫驅(qū)動(dòng)、SpringBoot自動(dòng)裝配中的應(yīng)用方式

    Java SPI在數(shù)據(jù)庫驅(qū)動(dòng)、SpringBoot自動(dòng)裝配中的應(yīng)用方式

    這篇文章主要介紹了Java SPI在數(shù)據(jù)庫驅(qū)動(dòng)、SpringBoot自動(dòng)裝配中的應(yīng)用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Java實(shí)現(xiàn)按行讀取大文件

    Java實(shí)現(xiàn)按行讀取大文件

    這篇文章主要介紹了Java實(shí)現(xiàn)按行讀取大文件的方法的小結(jié),非常的簡單實(shí)用,有需要的小伙伴尅參考下。
    2015-05-05

最新評論

辰溪县| 来宾市| 宾川县| 郓城县| 金塔县| 舒城县| 胶州市| 太仓市| 沙雅县| 巴彦淖尔市| 易门县| 象州县| 云南省| 德清县| 柳林县| 湖州市| 龙胜| 镇赉县| 康马县| 龙岩市| 天镇县| 海晏县| 永兴县| 隆尧县| 宜川县| 平舆县| 呼玛县| 石城县| 洛扎县| 堆龙德庆县| 广东省| 柏乡县| 林口县| 古交市| 张家港市| 遵义市| 宾川县| 碌曲县| 新平| 淳化县| 临武县|