[SPRING] spring - 클래스 패스 리소스에서 hibernate load * .hbm.xml
SPRINGspring - 클래스 패스 리소스에서 hibernate load * .hbm.xml
클래스 경로 리소스에 src / main / resources maven의 폴더에 hbm.xml 파일이 있습니다. 나는 Spring의 LocalSessionFactoryBean을 사용하여 다음 빈 설정으로이 파일들을로드했다.
<bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSourceOracle"/>
<property name="mappingResources">
<list>
<value>mapping/SystemUser.hbm.xml</value>
<value>mapping/SystemCredential.hbm.xml</value>
<value>mapping/SystemProvince.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
</value>
</property>
</bean>
그러나 그것은 나에게 FileNotFoundException을 준다. 내가 뭘 잘못했는지 말해줘. 고맙습니다.
해결법
-
==============================
1.Maven을 war 형식의 프로젝트와 함께 사용할 때 src / main / resources에있는 파일들은 WEB-INF / classes에 끝납니다 (그리고 resources 디렉토리 구조는 보존됩니다). 따라서 매핑 파일을 src / main / resources / mapping에 넣거나 다음 구성을 사용하십시오 :
Maven을 war 형식의 프로젝트와 함께 사용할 때 src / main / resources에있는 파일들은 WEB-INF / classes에 끝납니다 (그리고 resources 디렉토리 구조는 보존됩니다). 따라서 매핑 파일을 src / main / resources / mapping에 넣거나 다음 구성을 사용하십시오 :
<bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSourceOracle"/> <property name="mappingResources"> <list> <value>SystemUser.hbm.xml</value> <value>SystemCredential.hbm.xml</value> <value>SystemProvince.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.Oracle10gDialect </value> </property> </bean>
-
==============================
2.이것은 나에게 꽤 좋아 보인다. 그러므로 나는 문제가 설정이라고 생각하지 않는다. 차라리 파일이 클래스 경로에 없다고 생각합니다. 신청서를 어떻게 시작 했습니까?
이것은 나에게 꽤 좋아 보인다. 그러므로 나는 문제가 설정이라고 생각하지 않는다. 차라리 파일이 클래스 경로에 없다고 생각합니다. 신청서를 어떻게 시작 했습니까?
Eclipse를 사용하는 경우 src / main / resources가 소스 폴더로 사용되고 자원이 대상 / 클래스에 복사되었는지 확인하십시오.
-
==============================
3.
@Autowired private ResourceLoader rl; @Bean public LocalSessionFactoryBean sessionFactory() throws IOException { LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); sessionFactoryBean.setMappingLocations(loadResources()); } public Resource[] loadResources() { Resource[] resources = null; try { resources = ResourcePatternUtils.getResourcePatternResolver(rl) .getResources("classpath:/hibernate/*.hbm.xml"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return resources; }
-
==============================
4.웹 애플리케이션에서 접두사없이 리소스 경로를 작성하면 Spring은 컨텍스트 루트 (즉, WEB-INF가 포함 된 폴더)에서로드합니다. 클래스 패스에서 리소스를로드하려면 "classpath :"접두사를 사용해야합니다.
웹 애플리케이션에서 접두사없이 리소스 경로를 작성하면 Spring은 컨텍스트 루트 (즉, WEB-INF가 포함 된 폴더)에서로드합니다. 클래스 패스에서 리소스를로드하려면 "classpath :"접두사를 사용해야합니다.
<value>classpath:mapping/SystemUser.hbm.xml</value>
-
==============================
5.웹 애플리케이션에서 Spring 애플리케이션 컨텍스트를로드하는 경우 다음과 같은 오류가 표시 될 수 있습니다.
웹 애플리케이션에서 Spring 애플리케이션 컨텍스트를로드하는 경우 다음과 같은 오류가 표시 될 수 있습니다.
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.io.FileNotFoundException: ServletContext resource [/hibernate.cfg.xml] cannot be resolved to URL because it does not exist
해결책은 클래스 패스에서 설정을로드하도록 Spring에게 명시 적으로 알려주는 것입니다.
classpath:mypath/myfile.xml
from https://stackoverflow.com/questions/1947720/spring-hibernate-load-hbm-xml-from-classpath-resource by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 + 최대 절전 모드 : 테이블에서 레코드를 삭제할 수 없습니다. (0) | 2019.05.12 |
---|---|
[SPRING] 봄 mvc : 외부 폴더에 대한 리소스 액세스 (0) | 2019.05.12 |
[SPRING] 스프링 MVC @ModelAttribute 메소드가 "잘못된 요청"400을 반환합니다. (0) | 2019.05.12 |
[SPRING] 최상위 패키지에없는 주 클래스 인 경우 @RestController를 찾을 수 없습니다. (0) | 2019.05.12 |
[SPRING] 구성 문제 : XML 스키마 네임 스페이스 용 Spring NamespaceHandler를 찾을 수 없음 [http://java.sun.com/xml/ns/javaee] (0) | 2019.05.12 |