我使用Hibernate和Spring Data获得了春季启动项目。有多个配置文件,因此项目可以在测试配置文件,运行配置文件等中运行。每个配置文件都需要不同的Hibernate属性。 让我们说我宁愿在.property文件中定义keep属性而不是Java类。 application.properties附带了将profile指定为application- {profile} .properties的功能。不幸的是,这不是hibernate.properties的情况。或者是吗?有没有办法使用.properties文件为每个配置文件注入不同的hibernate属性?
答案 0 :(得分:1)
有一个String Spring查找,它被称为persistenceXmlLocation
,您可以从中Bean
创建一个import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Configuration
@Profile("dev")
public class DefaultDatabaseConfiguration {
@Bean(name = "persistenceXmlLocation")
public String persistenceXmlLocation() {
return "classpath:META-INF/persistence.xml";
}
}
,并根据您的活动配置文件使用不同的值。例如:
test
然后,对于您的不同个人资料,import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Configuration
@Profile("test")
public class TestDatabaseConfig {
@Bean(name = "persistenceXmlLocation")
public String persistenceXmlLocation() {
return "classpath:META-INF/test-persistence.xml";
}
}
在这种情况下,您就拥有了这个:
Environment
您也可以通过将Configuration
连接到function add_up($first, $second){
if(!isset($first, $second)){
return 'No numbers bitch';}
else {
return $first + $second;
}
}
echo add_up();
类并根据活动的配置文件返回不同的persistence.xml位置来实现此目的。
答案 1 :(得分:1)
使用
有一种最简单的方法maven ressource filtering
因此,您可以在 src / main 下添加文件夹过滤器,并将每个配置文件的所有配置文件放在该文件夹ex:(application-test.properties,application -run.properties ...),然后将此代码添加到您的pom:
<build>
<!--enter code here -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>src/main/filters/application-${env}.properties</filter>
</filters>
</build>
因此,如果您想要选择应用测试文件(mvn clean package -Denv=test
)
答案 2 :(得分:1)
如果您正在使用Spring Boot(我假设您使用spring-boot标记标记了问题),则可以通过 application.properties 或 application- {profile配置hibernate已经由Spring Boot加载了.properties 。只需考虑支持三个级别的属性:
任何JPA提供程序的常规属性。例如:
spring.jpa.show-SQL =真
一些直接的Hibernate属性。例如:
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.hibernate.ddl-AUTO =验证
JPA提供程序的其他属性。这些是你的情况下 hibernate 所期望的相同属性,只是将 spring.jpa.properties 添加到属性名称中。例如:
spring.jpa.properties.hibernate.format_sql =真 spring.jpa.properties.hibernate.generate_statistics =假
查看Spring Boot参考文档以及JpaProperties启动文件,了解前两个级别支持哪些属性。