Spring + Hibernate:hibernate配置文件不在classes下,怎么办?

    配置hibernate.cfg.xml时,如果这个文件的路径在classes目录之上的某个目录,如web/WEB-INF/hibernate.cfg.xml,咋办?

   我开始试着将sessionFactory的configuration值配成  ../hibernate.cfg.xml,不行;

配成 file:///../hibernate.cfg.xml,也不行;看了下源代码,这个东西根本不支持用".."表示的相对路径。

   configuration的类型是org.springframework.core.io.Resource,于是我们只好这样解决:写一个类实现Resource接口,在这个类中定义hibernate文件路径为web/WEB-INF/hiberate.cfg.xml,然后将类装配成Bean,并注入到sessionFactory里。

   spring正常情况下用的Resource类是org.springframework.core.io.FileSystemResource类,因此我们的实现类应将FileSystemResource类当作我们的 实现类的 一个成员变量,将这个成员变量的path设为 web/hibernate.cfg.xml的绝对路径(要利用java.io.File API),并通过这个成员来实现Resource接口要求实现的方法。

    通过这种办法,最后测试通过。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.