복붙노트

[SPRING] spring-context.xml의 위치

SPRING

spring-context.xml의 위치

Tomcat에서 응용 프로그램을 실행할 때 spring-context.xml 파일은 다음 위치에 있습니다.

괜찮아. 하지만 junit 테스트를 실행하려면 다음과 같이 spring-test-context.xml의 위치를 ​​제공해야합니다.

@ContextConfiguration(locations={"classpath:/spring-test-context.xml"})

이 작동하는 유일한 방법은 파일이있는 경우입니다.

응용 프로그램에서 스프링 컨텍스트 파일을 동일한 위치에서 찾을 수있는 방법은 무엇입니까? 그래서 junit 고환과 함께 작동하고 바람둥이에 배포?

나는 이것을 시도하고 어떤 콩을 찾지 못하는 것에 대해 많은 오류를 주었지만 파일을 찾을 수 없다고 말하지 않았다.

classpath:/WEB-INF/spring-test-context.xml

해결법

  1. ==============================

    1.duffymo가 암시 하듯이, TCF (Spring TestContext Framework)는 기본적으로 문자열 위치가 클래스 경로에 있다고 가정합니다. 자세한 내용은 ContextConfiguration에 대한 JavaDoc을 참조하십시오.

    duffymo가 암시 하듯이, TCF (Spring TestContext Framework)는 기본적으로 문자열 위치가 클래스 경로에 있다고 가정합니다. 자세한 내용은 ContextConfiguration에 대한 JavaDoc을 참조하십시오.

    그러나 파일 시스템에서 Spring의 리소스 추상화 (즉, "file :"접두어 사용)를 사용하여 절대 또는 상대 경로를 사용하여 리소스를 지정할 수도 있습니다. Spring의 AbstractContextLoader에서 modifyLocations () 메소드에 대한 JavaDoc에서 자세한 내용을 찾을 수있다.

    예를 들어 XML 구성 파일이 프로젝트 폴더의 "src / main / webapp / WEB-INF / spring-config.xml"에있는 경우 다음과 같이 위치를 상대 파일 시스템 경로로 지정할 수 있습니다.

    @ContextConfiguration("file:src/main/webapp/WEB-INF/spring-config.xml")
    

    또는 Spring 환경 설정 파일을 클래스 경로 (예 : src / main / resources)에 저장 한 다음 Spring MVC 구성에서 classpath를 통해 참조 할 수있다. 예를 들면 다음과 같다.

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/spring-config.xml</param-value>
    </context-param>
    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    

    이 방법을 사용하면 테스트 구성이 다음과 같이 보일 것입니다 (자원이 클래스 경로의 루트에 있음을 나타내는 선행 슬래시에주의하십시오).

    @ContextConfiguration("/spring-config.xml")
    

    또한 참조 매뉴얼의 XML 리소스 섹션이있는 컨텍스트 구성이 유용 할 수도 있습니다.

    문안 인사,

    (Spring TestContext Framework 작성자)

  2. ==============================

    2.문제는 / WEB-INF가 웹 응용 프로그램의 CLASSPATH에 없다는 것입니다. 그러나 / WEB-INF / classes는 있습니다.

    문제는 / WEB-INF가 웹 응용 프로그램의 CLASSPATH에 없다는 것입니다. 그러나 / WEB-INF / classes는 있습니다.

    테스트 문제는 앱 서버에서 실행되지 않기 때문에 WEB-INF / classes가 기본적으로 CLASSPATH의 일부가 아니기 때문입니다. 테스트를 설정하여 WEB-INF / classes가 테스트 CLASSPATH에 있거나 상대 또는 절대 파일 경로를 사용하여 찾을 수 있도록하는 것이 좋습니다.

  3. from https://stackoverflow.com/questions/10385452/location-of-spring-context-xml by cc-by-sa and MIT license