java为什么@resource可以找到实现接口的所有类并将它们作为列表注入
我想在我的应用程序中插入一个列表。我的代码如下所示:
interface A;
class B implements A;
class C implements A;
class D {
@Resource
private list<A> list;
}
为了注入list
,我打算用xml配置列表,但我发现我不需要这样做。当我使用@resource
时,列表已经被注入到应用程序中,我想知道@resource
在这里是如何工作的
# 1 楼答案
@Resource
注释告诉Spring在应用程序上下文中查找与所需类型匹配的任何bean,并将其注入变量中在您的情况下,将字段指定为
List<A>
将向Spring表明您希望注入所有类型的beanSpring支持DI的以下注释:
@Resource
,是基于资源名称注入的JavaEE规范的一部分@Inject
,使用JavaEE规范,保持代码兼容@Autowired
,特定于弹簧的@Inject计数器部分# 2 楼答案
它与用于注入依赖项的
@Autowired
相同区别在于
@Resource
是标准java注释(来自JSR-250),Spring也支持它进行注入我个人使用
@Autowired
作为@Resource
仅支持字段和setter注入,而@Autowired
支持更多,如构造函数和多参数方法注入