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