对运行时生成的依赖项使用 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);
});
} ```
在您的用例中,Event
、FetcherA
或 FetcherB
的 none 应该是 Spring-managed,即它们不应该是 Spring豆子。
如果您将 Fetch
字段移动为 fetch()
方法的参数,这将允许 FetcherX
类 成为 单例豆子。
您可以坚持,在这种情况下 FetcherX
类 将是 prototype beans,并且您的代码将与 spring容器在循环内请求新实例。不是很理想。
我是 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);
});
} ```
在您的用例中,Event
、FetcherA
或 FetcherB
的 none 应该是 Spring-managed,即它们不应该是 Spring豆子。
如果您将 Fetch
字段移动为 fetch()
方法的参数,这将允许 FetcherX
类 成为 单例豆子。
您可以坚持,在这种情况下 FetcherX
类 将是 prototype beans,并且您的代码将与 spring容器在循环内请求新实例。不是很理想。