java - Spring java config - 创建也在运行时创建的 beans 列表

标签 java spring config javabeans

我有一个由 Spring 创建的游戏室列表。每个房间对应一些规则(枚举),代码为:

@Bean
List<Room> rooms() {
    return Arrays.stream(Rules.values())
        .map(rule -> new Room(rule))
        .collect(Collectors.toList());
}

但现在我需要房间也是@Beans:我希望Spring 处理其中的@EventListener 注释。但是,我不想在配置中手动声明它们,因为将来可以更新 Rules 枚举。我怎么解决这个问题?谢谢。

最佳答案

它可以通过调用另一个标记为 @Bean 的方法来完成,即创建 Room bean,如下所示

@Bean
List<Room> rooms() {
    return Arrays.stream(Rules.values())
        .map(rule -> room(rule))
        .collect(Collectors.toList());
}

@Bean
Room room(Rule rule) {
    return new Room(rule);
}

这应该足够了,不需要 @EventListener

如果需要更多信息,请在评论中告知。

关于java - Spring java config - 创建也在运行时创建的 beans 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42341537/

相关文章:

java - 我无法在字段中输入数据

java - 从 v4 升级项目后找不到类 'android.support.v7.app.NotificationCompat$Builder'

java - Android Java - 跟踪多个触摸对象/事件?

java - Spring Security 记住我不工作

java - 使用 spring boot 和 activiti 时找不到进程文件夹

Tensorflow 对象检测配置文件文档

c++ - 配置解析器打印空白

java - 我的应用程序崩溃了,不知道为什么

java - Spring EasyMock 调用模拟方法时获取 null

c - 如何存储 gtk 应用程序的用户配置