验证Spring Web应用程序配置的最佳实践

4
我希望我的基于Spring的Web应用程序能够在启动时进行配置验证。
例如,这意味着:
- 检查必需的文件夹是否存在并且可读/可写。 - 检查是否设置并一致了所需的配置键。 - ... - 检查任何其他需要正确运行的限制条件。
如何执行这些检查并在出现问题时通知系统管理员?
目标是降低应用程序需要错误绑定资源时出现某些关键错误的风险。
注意:我的方法是使用特殊的EnvironmentValidation bean来检查配置/文件夹结构是否正确,如果不正确,则抛出异常。
2个回答

0

在启动期间,所有错误将被记录在服务器日志中。日志可以进行检查,并且系统管理员可以得到通知。


0

如果你想要通知,你可以设置一个邮件通知器,比如使用log4j,将启动时的任何异常发送给系统管理员。

如果配置键不存在,Spring无论如何都不会启动。

检查键和什么保持一致?

检查文件夹是否存在且可读/可写并不是我在Web应用程序中真正需要做的事情 - 这应该属于您的部署基础架构。但你可以编写自己的自定义检查作为Spring bean,在加载这些Bean之前进行验证,并在某些配置失败时抛出异常。


“the keys are consistent” 意思是确保它们包含有效的配置(简单的例子,检查某个整数是否在给定的范围内)。 - Giordano
你的对象本身应该执行此类型的边界检查。例如,在你的Spring Bean构造函数中抛出IllegalArgumentException异常,这将在启动期间进行验证。 - Michael
好的,然而我的观点略有不同。我想在启动时进行“健全性检查”,因为IllegalArgumentException可能会在应用程序的生命周期的后期出现。假设应用程序通过与某些用户交互来生成一些数据。在某个时刻,应用程序需要将这些数据从内存(会话)移动到磁盘(例如作为二进制文件),并访问“有故障”的参数。此时,应用程序将无法恢复,并且数据或业务流程的一部分将处于风险之中。 - Giordano
Spring会在容器启动时实例化您的每个bean - 如果您在构造函数中进行检查,您将立即收到IllegalArgumentException。 - Michael
好的,这确实是我一直在寻找的最佳实践之一... :) 实际上,在构造函数或“setConfiguration(Properties properties)”方法中执行所有这些检查应该就足够了。谢谢,这是一个相当明显的解决方案,但由于某种原因它没有成为我的首选 :P - Giordano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接