共同點:
@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...