2015-10-17 29 views
0

我正在将Spring和Hibernate用于非Web应用程序。我在/src/main/resources/Hibernate.xml如何在调试和发布模式下从不同位置加载Spring beans xml配置

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
....login, password, etc 

这是好的,但是当我完成了一些变化,我想创建一个可执行的JAR文件,并把它放入另一台服务器,其中创建了一个SessionFactory豆是位于不同的数据库。问题是我必须打开jar文件并在每次创建jar文件时更改数据库配置,以使其与不同服务器上的外部数据库兼容。

此问题的解决方案是从jar文件的外部加载Hibernate.xml。

这里是问题 - 如何做到这一点?

回答

0

解决的办法是添加“文件:”前缀:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="file:config/hibernate.properties" /> 
</bean> 
1

如果这两种环境之间的所有差异都是数据库地址和凭证,我建议将这些文件放入属性文件中,并在XML配置中使用占位符(docs)。

然后,您可以访问属性文件作为类路径资源(在Spring配置中,使用classpath:前缀作为文件路径),您可以在运行时配置该文件,或让构建系统将不同版本的文件复制到JAR中取决于目标环境(在Maven中,这可以使用Assembly plugin来完成)。

+0

但我怎么能指向特性文件JAR文件之外?当我把类路径:../ config.properties它尖叫文件未找到。 –

+0

尝试使用'classpath:config.properties',并将'config.properties'直接放在classpath上的一个文件夹中。 –

+0

不工作。我有main.jar和confi.properties在相同的目录。我通过“java -jar main.jar”运行它。还试图添加-cp ./,但仍找不到文件。 –