java - 我可以使用 spring @Autowired 依赖注入(inject)来构建一个类的多个实例吗?

标签 java spring dependency-injection autowired

我有一个 vaadin UI 类,其构造函数采用 2 个参数。它使用一些字段构建一条简单的线,显示数据。在另一个(父)UI 中,我想多次嵌入第一个 UI(子),具体取决于父中加载的某些数据。所以现在我有两个问题:

  1. 我可以使用 springs @Autowired 注释将子 UI 的多个实例注入(inject)到父 UI 中吗?如果是,我该怎么做?
  2. 如何将参数传递给 @Autowired 子类的构造函数?

我已经发现,我必须用 @Autowired 注释我的子类的构造函数。

带有构造函数的我的子 UI 类(用 @Autowired 注释)

public class ChildUI {

   private String arg1;
   private String arg2;

   @Autowired
   public ChildUI(String arg1, String arg2){
      this.arg1 = arg1;
      this.arg2 = arg2;
   }

}

在我的父类中,我想做这样的事情(personList是从数据库加载的):

public class ParentUI {

   ...
   for(Person p : personList){
      //inject instance of ChildUI here and pass p.getLastName() to arg1 and p.getFirstName() to arg2
   }
   ...

}

我用谷歌搜索了一段时间,但没有真正找到我要找的东西。也许我只是不知道要搜索什么关键字。也许有人可以尝试解释一下该怎么做?

最佳答案

只需像平常一样创建 ChildUI

  for(Person p : personList){
     ChildUI someChild=nChildUI(p.getLastName(),m.getFirstName());
   }
   ...

并用someChild做一些事情

或者如果 ChildUI 注入(inject)了一些其他依赖项 - 首先将其设置为原型(prototype)范围,然后

    @Autowire
    private ApplicationContext ctx;
....
      for(Person p : personList){
         ChildUI someChild=ctx.getBean(ChildUI.class,p.getLastName(),m.getFirstName());
       }

关于java - 我可以使用 spring @Autowired 依赖注入(inject)来构建一个类的多个实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58357386/

相关文章:

java - Eclipse 找不到 Spring 配置文件

java - Android:在其他线程中操作UI控件,但是

java - 无法打印读取的整数: java

java - Spring Data JPA - 删除子实体而不是在更新时设置为空?

angular - 不需要时服务不会被破坏(或刷新、清理......)

android-studio - 如何使用 Dagger2 android 为 ViewModel 使用构造函数注入(inject)?

java - 创建文件的最简单方法是什么?

java - Android 缩放/转换 Canvas 不会修改可点击区域

java - 使用 Spring MVC 流式传输数据

java - 反序列化类中的 Autowiring