当前位置: 首页 > 面试题库 >

Spring-以编程方式生成一组bean

封烈
2023-03-14
问题内容

我有一个Dropwizard应用程序,需要为配置列表中的每个配置生成十几个bean。健康检查,石英计划程序等。

像这样:

@Component
class MyModule {
    @Inject
    private MyConfiguration configuration;

    @Bean
    @Lazy
    public QuartzModule quartzModule() {
        return new QuartzModule(quartzConfiguration());
    }


    @Bean
    @Lazy
    public QuartzConfiguration quartzConfiguration() {
        return this.configuration.getQuartzConfiguration();
    }

    @Bean
    @Lazy
    public HealthCheck healthCheck() throws SchedulerException {
        return this.quartzModule().quartzHealthCheck();
    }
}

我有多个MyConfiguration实例,都需要这样的bean。现在,我必须复制并粘贴这些定义,并为每个新配置重命名它们。

我可以以某种方式遍历我的配置类并为每个配置类生成一组bean定义吗?

我可以使用子类解决方案或任何类型安全的方法,而无需每次添加新服务时都复制并粘贴相同的代码并重命名方法。

编辑:我应该补充一点,我还有其他依赖于这些bean的组件(Collection<HealthCheck>例如,它们注入)。


问题答案:

我能想到的“最佳”方法是将所有Quartz配置和调度程序包装在1个uber bean中,并手动将其连接起来,然后重构代码以与uber bean接口一起使用。

uber
bean在其PostConstruct中创建了我需要的所有对象,并实现了ApplicationContextAware,以便可以自动连接它们。这并不理想,但这是我能想到的最好的方法。

Spring根本没有一种以类型安全的方式动态添加bean的好方法。



 类似资料:
  • 问题内容: 给定2种rgb颜色和一个矩形区域,我想在这些颜色之间生成基本的线性渐变。我已经进行了快速搜索,唯一能够找到的是此Blog条目,但示例代码似乎丢失了,或者至少是在发布此信息之时。任何帮助,算法,代码示例,等等。这将用Java编写,但是显示层已经处理完毕,我只需要弄清楚如何弄清楚要显示的内容。 问题答案: 您需要在第一和第二种颜色之间进行插值。通过为每个分量(R,G,B)计算相同的插值,可

  • 问题内容: 我使用eclipse在最初独立于eclipse创建的应用程序上工作。因此,该应用程序的目录结构绝对不适合日食使用。 我想以编程方式为该应用程序生成一个项目。在和文件是很容易的弄清楚,我已经了解到,项目存储在工作区下 不幸的是,这里的某些文件(尤其是)似乎是以某种二进制格式编码的。直觉上,我尝试使用-没有骰子反序列化它。因此,它似乎不是序列化的Java对象。 我的问题是:有没有一种方法可

  • 问题内容: 有没有人使用基于Java的库来生成excel文档?最好支持2003年? 问题答案: 我目前正在使用非常全面的Apache POI(http://poi.apache.org/index.html)。2003文件格式版本仍处于beta版本,但似乎运行良好。我并没有很好地利用它的功能,只是对Excel进行简单的读写,但这似乎是可靠的。

  • 我已经从容器A复制了一个文件1.txt到容器b。 我还能够获得复制文件的完整URL,并能够在相同的浏览器选项卡中打开它,只要容器是公共的。 现在我正在使我的容器私有..我希望有一个简单的API可以给我SAS URL 有没有这样的API?

  • 在控制器中引用FactoryBean,然后。但是,对于这样一个简单的情况,我真的需要创建一个新类吗? 有一个工厂方法来构造托管bean。这个方法仍然存在显式实例化POJO的问题,因此它本身需要对它进行Spring注入。此外,这是完整的样板文件。 bean的构造非常琐碎,所以我认为Spring中有一种更简单的方法来完成它。有吗?

  • 问题内容: 我想为Java的玩具语言编写一个编译器。我想生成可运行的.class文件。我想知道执行此操作的最佳库或工具是什么?我知道我可以学习所有指令的二进制格式并建立自己的常量池等,但这似乎应该已经完成​​:没必要重新发明轮子,对吗? 在线搜索我发现了两种不同的Java汇编语言Jasmin和Jamaica,但是只有Jasmin看起来有所维护。 是否存在用于将字节码写入流的Java库?这是Apac