java - 对运行时生成的依赖项使用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
都不应该是 Spring 管理的,即它们不应该是 Spring bean。
如果您将该Fetch
字段移动为fetch()
方法的参数,则这将允许两个FetcherX
类都是单例bean。
您可以坚持,在这种情况下,FetcherX
类将是原型bean,并且您的代码将与 spring 容器集成以在循环内请求新实例。不是最理想的。
推荐阅读
- python - 尝试在 Django 中进行分页时,X 没有 len
- python - 如何为 Keras 中的“张量”对象赋值?
- java - Spring Boot @Value 没有被填充..为什么?
- javascript - Dofus 最近的门户
- c# - 如何通过单击按钮移动到 Unity 中的下一个场景来显示插页式广告?
- sql - 在sql中复制相同的数据,使用合并从源表到目标表被读取为不同的数据,但它是在sql中解析的相同json源
- swift - 未下载文件时从文件应用程序打开文件(使用就地打开)
- python - 新python用户的愚蠢文件阅读问题
- javascript - 如何确保 JS 文件在外部 php 中运行而不再次包含?
- json - 如何使用 Json 对象和为颤振请求提供输入的日历(REST API)