有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么@resource可以找到实现接口的所有类并将它们作为列表注入

我想在我的应用程序中插入一个列表。我的代码如下所示:

interface A;
class B implements A;
class C implements A;

class D {
    @Resource
    private list<A> list;
}

为了注入list,我打算用xml配置列表,但我发现我不需要这样做。当我使用@resource时,列表已经被注入到应用程序中,我想知道@resource在这里是如何工作的


共 (2) 个答案

  1. # 1 楼答案

    @Resource注释告诉Spring在应用程序上下文中查找与所需类型匹配的任何bean,并将其注入变量中

    在您的情况下,将字段指定为List<A>将向Spring表明您希望注入所有类型的bean

    Spring支持DI的以下注释:

    • @Resource,是基于资源名称注入的JavaEE规范的一部分
    • @Inject,使用JavaEE规范,保持代码兼容
    • @Autowired,特定于弹簧的@Inject计数器部分
  2. # 2 楼答案

    它与用于注入依赖项的@Autowired相同

    区别在于@Resource是标准java注释(来自JSR-250),Spring也支持它进行注入

    我个人使用@Autowired作为@Resource仅支持字段和setter注入,而@Autowired支持更多,如构造函数和多参数方法注入