参考
补充说明与总结
@Resource
有两个属性 name 和 type。- 可以指定特定的子类实现。
@Autowired
没有属性指定。- 如果涉及到 type 无法辨别注入对象时,需要依赖
@Qualifier
或@Primary
注解来修饰。
- 如果涉及到 type 无法辨别注入对象时,需要依赖
- 但两者都可以通过 name 或 type 容错识别。
示例
-
https://github.com/zengxf/spring-demo/tree/master/feature-research/test-DI/src/main/java/test/ann1
-
test.ann1.TestService
java
@Resource(name = "testImpl2") // 只有一个实现类时,可以不设置 name 或 type
// @Resource(type = TestImpl1.class)
ITest obj;
@Resource
TestImpl1 testImpl; // type 可识别
@Resource
ITest testImpl2; // name 可识别
@Autowired
@Qualifier("testImpl2")
ITest obj;
@Autowired
TestImpl1 testImpl; // type 可识别
@Autowired
ITest testImpl2; // name 可识别