【问题标题】:How to validate enum values against DB values in spring boot on application startup如何在应用程序启动时在 Spring Boot 中针对 DB 值验证枚举值
【发布时间】:2015-02-04 06:28:47
【问题描述】:

我已经为 DB 中的枚举创建了表,并对主表应用了参照完整性。但我需要在 Spring Boot 中启动应用程序时根据 DB 值验证枚举值。

【问题讨论】:

    标签: java database enums spring-boot


    【解决方案1】:

    Spring 提供了一个Lifecycle 接口,你可以实现它,容器一旦启动就会通知你。然后,您可以查询您的数据库以执行您需要的任何检查。来自文档:

    任何 Spring 管理的对象都可以实现该接口。然后,当 ApplicationContext 本身启动和停止时,它会将这些调用级联到该上下文中定义的所有生命周期实现。它通过委托给 LifecycleProcessor 来做到这一点:

    【讨论】:

      【解决方案2】:

      特别是对于 Spring Boot,我发现最简单的解决方案是 SpringApplicationRunListener

      如果 @ComponentScan 没有自动添加该类,则您必须实现您的 Listener 并将其注册到 spring.factories 文件中。

       org.springframework.boot.SpringApplicationRunListener=xxx.MyListener
      

      它为 Spring Boot 生命周期定义了非常清晰的钩子。注意:虽然只是一个接口,但实现类必须提供特殊的构造函数:

      public MyListener(SpringApplication application, String[] args) {}
      

      【讨论】:

        猜你喜欢
        • 2021-05-22
        • 2019-05-29
        • 2019-06-05
        • 2018-05-29
        • 1970-01-01
        • 2017-07-03
        • 2021-06-19
        • 2010-09-06
        • 1970-01-01
        相关资源
        最近更新 更多