有没有办法禁止在Spring配置中传递给定的属性值(例如application.proeprties)。
例如,如果我们想在使用hibernate时防止意外的数据库模式迁移。
我们假设我们只想使用属性validate
的值spring.jpa.hibernate.ddl-auto
。如果值不是validate
则抛出异常或将其覆盖到validate
。
这可能吗?也许有一些" hook"或预处理器,其中可以在应用程序启动之前检查属性。
答案 0 :(得分:3)
您可以使用EnvironmentPostProcessor
查看环境并执行您喜欢的任何操作。 This section of the documentation解释了如何做到这一点。
还可以在使用EnvironmentPostProcessor刷新应用程序上下文之前自定义环境。每个实现都应该在META-INF / spring.factories中注册:
org.springframework.boot.env.EnvironmentPostProcessor=com.example.YourEnvironmentPostProcessor