对运行时生成的依赖项使用 spring 依赖项注入

using spring dependency injection for runtime generated dependencies

我是 Spring 的新手,为了更好地理解我正在学习的内容,我决定将 Spring 整合到我的一个项目中。在项目中,运行时会生成一个Events的集合,其中Event是一个POJO。 FetcherA 和 FetcherB 是两个 类,它们依赖于 Event 实例来获取它们的输出,这意味着 FetcherA 和 FetcherB 的输出对于不同的 Event 实例是不同的。

由于这些事件是在运行时生成的,我如何使用 Spring 依赖注入将事件 bean 注入到运行时创建的每个 FetcherA 和 FetcherB 对象中。下面是我的代码的示例。

public class Event {
     //some data fields
}

public class FetcherA {
    private Event event;

    FetcherA (Event event) {this.event=event}
    
    public String fetch () {//fetch output based on this event}
}

public class FetcherB {
    private Event event;

    FetcherB (Event event) {this.event=event}
    
    public String fetch () {//fetch output based on this event}
}

public static void main (String[] args) {
   List<Event> events = EventsFetcher.fetchEvent();
   List<String> myTextBook = new ArrayList<String>();
   events.forEach ( event -> {
      String messageBody= new FetcherA (event).fetch();
      String messageTitle = new FetcherB (event).fetch();
      myTextBook.add(messageBody);
      myTextBook.add(messageTitle);
   });

} ```

在您的用例中,EventFetcherAFetcherB 的 none 应该是 Spring-managed,即它们不应该是 Spring豆子。

如果您将 Fetch 字段移动为 fetch() 方法的参数,这将允许 FetcherX 类 成为 单例豆子。

您可以坚持,在这种情况下 FetcherX 类 将是 prototype beans,并且您的代码将与 spring容器在循环内请求新实例。不是很理想。