2012-05-09 3 views
2

현재 Maven 빌드의 "main"applicationContext-a.xml을 사용하여 ApplicationContext를 만들어야합니다. 다른 하나는 다른 Maven 빌드의 클래스를 연결하고 Maven 의존성에 포함 된 jar에 미리 설정되어 있습니다. 여기에 아이디어 Jar의 여러 XML 파일이있는 Spring ApplicationContext

:이 같은 프로젝트에 있기 때문에

ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { 
       "classpath*:applicationContext-*.xml"}); 

이 클래스 경로에서의 ApplicationContext-a.xml을로드해야합니다. 이 작동합니다.

그런 다음 applicationContext-b.xml을 dependency-jar에서로드해야합니다. 이것은 작동하지 않습니다.

"classpath*:applicationContext-*.xml" 

만, 직접 클래스 경로 내부의 항아리 내부에 아무것도를 XMLS 일치 없다는 것을

참고.

에게 내가 발견 무엇 :

ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { 
       "classpath*:applicationContext-*.xml", "classpath*:applicationContext-b.xml"}); 

이 작동,하지만 난 명시 적으로 단지 내부의 XML의 파일 이름을 알 수있는 경우에만 : ApplicationContext를-b.xml 나는이 필요

을 통합 테스트를 위해 일하기 :

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"**/applicationContext*.xml"}) 
public class TestClass { ... } 

가장 좋은 생각은 사용자 정의 로더 일 수 있습니까? 이 패턴 작업을 수행하는 방법이 있어야합니다.

얼마 전에 다른 방법으로 작동하는 solution이있었습니다. 단지 jar에서 applicationContext.xml 만 가져옵니다. 클래스 패스 안에 다른 사람이 있으면이 파일에서만 일치합니다.

답변

6

classpath*: 루트 폴더 아래의 파일에는 제한이 있다고 생각합니다. 폴더 아래에서 파일을 이동해보십시오 (예 : spring/application-a.xmlspring/application-b.xml). 그런 다음 경로 classpath*:/spring/application-*.xml을 가질 수 있습니다.

+0

이것은 간단히 말해서 xml 파일이 jar 파일 내부의 'spring'과 같은 하위 디렉토리에있는 경우 작동합니다. 대단히 감사합니다. – blang