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

toiithl6  于 2023-10-23  发布在  Spring
关注(0)|答案(2)|浏览(160)

我有一个遗留的spring应用程序,它是使用基于xml的配置构建的,我正在尝试使用二级缓存配置会话工厂。
我有ecache.xml文件目前在资源文件夹中也hibernate.javax.cache.uri属性需要ecache.xml的绝对路径。
如果我提供URI为file:///c:/App/resources/ecache.xml,它就可以工作。但这不利于部署和维护。
如何在基于spring xml的configuration中指定像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>
vbkedwbf

vbkedwbf1#

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

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

ej83mcc02#

正确格式为classpath://ehcache.xml
以下内容不起作用:
类路径:ehcach.xml
classpath:/ehcache.xml
https://github.com/hibernate/hibernate-orm/blob/8461ba2078657caf58930b9485020fe89aff4afe/hibernate-core/src/main/java/org/hibernate/boot/registry/classloading/internal/ClassLoaderServiceImpl.java#L42

相关问题