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