註解 Autowired與 Resource的區別

2021-10-03 11:28:46 字數 1633 閱讀 8684

共同點:

@resource和@autowired都可以作為注入屬性的修飾,在介面僅有單一實現類時,兩個註解的修飾效果相同,可以互相替換,不影響使用。

注意:在只有單一的實現類時,兩個註解的作用相同

不同點:

在spring中@autowired注入規則

@autowired預設是按照bytype進行注入的,但是當bytype方式找到多個符合,則又按照byname方式比對,如果還有多個,則報出異常。

**演示:

1、只存在單一實現類

public inte***ce testbiz 

@service("testbizimpl")

public class testbizimpl implements testbiz

}單元自測方法

@autowired

private testbiz testbiz;

// @resource

//private testbiz testbiz;

@test

public void test()

上述使用@resource註解和@autowired註解均能輸出結果:

testbizimpl實現類輸出資訊msg:報警:123213

存在多個實現類

//新增乙個實現類

@service("biztestimpl")

public class biztestimpl implements testbiz

} @resource

private testbiz testbiz;

@test

public void test()

//上述**執行不成功,因為resource通過byname進行注入,我們將上述**換成

@resource(name="testbizimpl")

private testbiz testbiz;

@test

public void test()

即在註解後新增name屬性,執行成功

為了不再註解後新增name屬性,可以將例項物件名稱(了解不多,按照物件例項介紹),也可執行成功,如下:

***************====

@resource

private testbiz testbizimpl;

@test

public void test()

即將例項名稱換為對應的@service中的名字,執行成功

********************=

如果要使用autowired註解,因為該註解沒有name屬性,只能通過這樣進行訪問,為了演示呼叫另乙個實現類中的方法

@autowired

private testbiz biztestimpl;

@test

public void test()

輸出:biztestimpl結果輸出

testbiz後面例項化的名稱只能是biztestimpl和testbizimpl,即@service註解後面的名稱;其餘均報錯

Resource與 Autowired註解的區別

一 resource注入 現在有乙個介面human和兩個實現類manimpl womanimpl,在service層的乙個bean中要引用了介面human,這種情況處理如下 介面human public inte ce human public void walk 實現類womanimpl serv...

註解 Resource與 Autowired的區別

注意 spring容器以name為key儲存bean!這裡的name可以指定,否則取首字母小寫的類名。有相同的就報異常 beandefinitionstoreexception!resource resource有兩個常用屬性name type,所以分4種情況 指定name和type 通過name找...

Resource與 Autowired註解的區別

resource的作用相當於 autowired,只不過 autowired按bytype自動注入,而 resource預設按 byname自動注入罷了。resource有兩個屬性是比較重要的,分是name和type,spring將 resource註解的name屬性解析為bean的名字,而type...