Java 如何在应用程序启动时根据spring boot中的DB值验证枚举值

Java 如何在应用程序启动时根据spring boot中的DB值验证枚举值,java,database,enums,spring-boot,Java,Database,Enums,Spring Boot,我已经为数据库中的枚举创建了表,并对主表应用了引用完整性。但是我需要在spring boot中根据应用程序启动时的DB值验证枚举值。spring提供了一个可以实现的生命周期接口,容器启动后会通知您。然后可以查询数据库以执行所需的任何检查。从文件中: 任何Spring托管对象都可以实现该接口。然后,当ApplicationContext本身启动和停止时,它会将这些调用级联到该上下文中定义的所有生命周期实现。它通过授权给LifecycleProcessor来实现这一点: 特别是对于spring bo

我已经为数据库中的枚举创建了表,并对主表应用了引用完整性。但是我需要在spring boot中根据应用程序启动时的DB值验证枚举值。

spring提供了一个可以实现的生命周期接口,容器启动后会通知您。然后可以查询数据库以执行所需的任何检查。从文件中:

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


特别是对于spring boot,我发现最简单的解决方案是

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

 org.springframework.boot.SpringApplicationRunListener=xxx.MyListener
它为spring引导生命周期定义了非常清晰的挂钩。注意:虽然它只是一个接口,但实现类必须提供一个特殊的构造函数:

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