在我的springboot应用程序中,我使用“utility”类(只有静态方法的类)来验证配置上的业务规则。
例如
@Component
public class MyClass {
@Autowired
public MyClass(MyConfig config) {
MyConfigValidator.validate(config);
}
...
如果 MyConfigValidator.validate()
如果发现配置不一致,则必须退出springboot应用程序
据我所知,正确退出springboot应用程序的最佳/唯一方法是运行:
SpringApplication.exit(context, () -> returnCode);
``` `context` 成为一个 `ApplicationContext` 必须注入的示例。
我的问题是 `static` 方法 `MyConfigValidator.validate()` :由于是静态的,它无法访问注入的值
我们来看看 `MyConfigValidator` :
public class MyConfigValidator {
public static void validate(MyConfig config) {
if (!isValid(config)) {
doExit();
}
}
/// no need to detail here the isValid() method
private static void doExit() {
/// here, I don't know how to get the applicationContext
SpringApplication.exit(applicationContext, () -> returnCode);
}
}
你知道我怎样才能拿到 `ApplicationContext` 在我的 `MyConfigValidator` 班级。谢谢你的帮助
你好,菲利普
1条答案
按热度按时间5jdjgkvh1#
我将创建一个
ApplicationRunner
在应用程序启动时验证状态的。如果抛出异常,应用程序将无法启动。例如:此外,如果希望在启动时对配置属性执行验证,则可能需要考虑使用
@Validated
@ConfigurationProperties
而不是bean:有关使用已验证的configurationproperties的更多信息,请参见此处。