外部化Hibernate Search的配置

时间:2019-02-21 15:02:14

标签: spring-boot elasticsearch hibernate-search

我正在使用Spring Boot运行休眠搜索。我已经为我的应用程序编写了工作配置。但是,我想外部化配置并使用const withExpensive = Comp => props => { const optionalValue = useExpensiveHook(); return <Comp optionalValue={optionalValue} ...props />; } const Component = ({ optionalValue }) => { return ... } const ExpensiveComponent = withExpensive(Component); 而不是./config/hibernate.properties。将我的属性文件复制到所需位置后,我得到了例外:

src/main/resources/hibernate.properties

有人对我应该如何告诉spring读取我的配置文件有任何想法吗?

2 个答案:

答案 0 :(得分:0)

将您的配置移至src/main/resources/application.properties文件,并在所有地方spring.jpa.properties.之前加上前缀,因此hibernate.dialect将变成spring.jpa.properties.hibernate.dialect

然后,您可以使用Spring功能将配置移动到所需的位置。要将其移至./config/application.properties,我想您必须将@PropertySource("./config/application.properties")添加到您的@Configuration类之一或类似的类中。

我确定您还可以将休眠配置保存在单独的文件中(与其余应用程序配置分开)。

有关在Spring Boot中外部化配置的更多详细信息,请参见https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

答案 1 :(得分:0)

由于某种原因,只要hibernate.properties配置文件不存在,hibernate-search就会阻止应用程序启动。尝试了一段时间没有成功之后,我找到了解决我的问题的方法。

  • 首先,我创建了一个空的hibernate.properties文件并将其放在src/main/resources下。
  • 其次,我将所有休眠搜索配置移至application.properties,如下所示:

    spring.jpa.properties.hibernate.search.default.indexmanager = elasticsearch  spring.jpa.properties.hibernate.search.default.elasticsearch.host = http://my-server.com  spring.jpa.properties.hibernate.search.default.elasticsearch.index_schema_management_strategy = CREATE spring.jpa.properties.hibernate.search.default.elasticsearch.required_index_status = yellow

通过这种方式,应用程序将启动,并且spring将从here中所述的外部化配置中获取所有配置。