persistence.xml变量的默认值,由环境变量设置

时间:2019-02-21 14:38:47

标签: java hibernate maven jpa environment-variables

tl; dr:我想用环境变量填充persistence.xml中的变量,或者如果不存在这样的环境变量,则将其设置为先前定义的默认值。


我想在Docker启动时在我的persistence.xml中动态设置Hibernate的默认方案。 因此,我在以下属性中添加了一个变量,可以使用环境变量进行设置:

<property name="hibernate.default_schema" value="${env.DB_SCHEME}"/>

这对于docker环境非常合适,但是对于非docker环境,我需要某种默认值进行注入。

可悲的是,我不能使用类似这样的东西,因为它不受支持:

<property name="hibernate.default_schema" value="${env.DB_SCHEMA:my_default_scheme}"/>

我还尝试将属性env.DB_SCHEME添加到项目的Maven属性中, 但是那样一来,它总是使用Maven的值,而我再也无法用环境变量覆盖它了。

我读到的另一件事是使用Maven资源插件中的过滤选项。这样,我可以将变量替换为预定义的值。 但是那样一来,我必须在构建时选择一个配置文件,并且无法在运行时进行更改。

我还尝试以编程方式进行操作。因此,我使用了我的持久性单元的entityManager,并检查了是否设置了环境变量。 如果已设置(仅在使用docker环境时),则应将${env.DB_SCHEME}置于属性的值中。 否则,它可能已经放置了${DB_SCHEME},以便Maven的属性以后可以覆盖它。 但是不知何故,属性没有设置。也许代码执行得太迟了,因为属性hibernate.hbm2ddl.auto“设置为有效。

0 个答案:

没有答案