2011-05-16 2 views
1

몇 가지 설명이 필요합니다. 내가 만든 항아리가 있는데 항아리 안에는로드해야하는 사용자 정의 application-context.xml 파일이 있습니다. jar 파일 내부의 클래스 내에서 파일을로드합니다. 이 application-context.xml의 url을 설정할 때 jar의 클래스 경로에 해당하는 디렉토리입니까, 아니면 여전히 jar의 클래스 경로를 사용하고있는 프로젝트입니까? 예를 들어항아리 내에서 컨텍스트 로딩

-

항아리의 클래스 경로 :

src > main > META-INF > application-custom-context.xml 

프로젝트의 클래스 경로 :

src > Libraries > myjar.jar > src > main > META-INF > application-custom-context.xml 

내가이 URL의의는 정확하지 않습니다 알고 : P -,하지만 내 상황의 내부 생성, 어떤 디렉토리 구조를 따라갈 것인가. 이것은 모두 이론적입니다. 누군가 오늘이 질문을했는데 대답 할 수있는 방법이 없습니다. 나는 당신이 항아리로부터 클래스를 호출하면 classpath가 그 항아리의 내용에 상대적이어야한다고 생각할 것이다. 그러나 내가 생각하는 것은 항상 옳다고 생각한다. :)

답변

5

Spring 문맥에 대한 "경로" classpath를 기준으로합니다. jar 파일이 classpath (예 : web-inf/lib에 있음)에 포함되어 있으면 마치 프로젝트 (web-inf/classes)에있는 것처럼 처리됩니다.

즉, 컨텍스트 파일이 jar 파일의 "META-INF \ spring \ context.xml"에 있으면 jar 파일을 포함하는 모든 사람이 동일한 방식으로 참조 할 수 있습니다.

+0

나는 당신의 말에 뒤틀린다고 생각한다. 만약 app-context.xml 파일이 META-INF/spring/app-context.xml에있는 jar 파일을 가지고 있고 그 jar 파일을 프로젝트, 참조 된 URL은 무엇입니까? 단순히 ClassPathXmlApplicationContext ("url")를 사용하여 xml을 추가하는 경우. – ninnemannk

+0

새로운 ClassPathXmlApplicationContext ("META-INF/spring/app-context.xml") 또는 단순히 jar 파일의 루트에있는 경우 "app-context.xml"로 참조 할 수 있습니다. – JustinKSU

+0

완벽한, 감사합니다! – ninnemannk