如何在基于xml的spring配置中为hibernate.javax.cache.uri属性指定相对路径

Posted

技术标签:

【中文标题】如何在基于xml的spring配置中为hibernate.javax.cache.uri属性指定相对路径【英文标题】:How to specify relative path for hibernate.javax.cache.uri property in xml based spring configuration 【发布时间】:2018-09-24 14:33:16 【问题描述】:

我有使用基于 xml 的配置构建的遗留 Spring 应用程序我正在尝试使用二级缓存配置会话工厂。

我在资源文件夹中有ecache.xml 文件,hibernate.javax.cache.uri 属性需要ecache.xml 的绝对路径。

如果我将 URI 提供为 file:///c:/App/resources/ecache.xml 它可以工作。但这不利于部署、维护。

如何在基于 spring xml 的配置中指定相对路径,如 classpath:ehcache.xml/WEB-INF/ehcahe.xml

注意:我没有使用spring boot。

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="packagesToScan">
            <list>
                <value>com.example.vl.model</value>
            </list>
        </property>
        <property name="configLocation" value="classpath:hibernate.cfg.xml" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.javax.cache.uri">file:///c:/App/resources/ecache.xml</prop>
            </props>
        </property>
    </bean>

【问题讨论】:

【参考方案1】:

好的,我可以使用 Spring EL 在基于 xml 的配置中获取绝对 uri,如下所示。

<prop key="hibernate.javax.cache.uri"># new org.springframework.core.io.ClassPathResource("/ehcache.xml").getURI().toString()</prop>

【讨论】:

以上是关于如何在基于xml的spring配置中为hibernate.javax.cache.uri属性指定相对路径的主要内容,如果未能解决你的问题,请参考以下文章

Spring集成Hibernate(基于XML和注解配置)

JAVA SSH框架搭建流程

javaEE中的hibernate配置笔记

如何使用 Spring-Security 3 和 Hibernate 4 将 spring security xml 配置 hibernate 转换为 java config

java - 如何在hibernate java中为给定的xml使用注释

在Spring中使用Hibernate 4