2011-11-14 4 views
2

Google App Engine은 정기적으로 인스턴스를 시작하고 중지하기 때문에 정기적으로 콜드 스타트 ​​시간이 발생합니다. XML을 사용하여 스프링 MVC3 앱을 구성하여 클래스 파일 스캔으로 인한 3-5 초의 지연을 피하고 싶습니다. 새로운 인스턴스가 스핀 업 될 때 주석 구성을 사용할 때의 주석.봄 MVC 주석을 사용하여 XML 구성 파일을 만드는 방법은 무엇입니까?

그러나 XML을 작성하는 일은 약간의 일이며, 주석을 사용하여 구성을 정의하는 것이 훨씬 쉽습니다. 그래서 두 세계의 장점을 최대한 활용하고 주석을 사용하여 구성 파일을 생성 한 다음 런타임에 검색을 해제하십시오. this question에서이 작업을 수행 할 기존 도구가없는 것으로 보입니다.

이렇게 접근하는 가장 좋은 방법은 무엇입니까? 아마 봄에 런타임에 스캔을 수행하는 클래스가 있는데,이 클래스는 디자인 타임에 스캔 한 다음 XML에서 침을 뱉어 낼 수 있습니다.

는 XML 구성 할 수 없습니다 주석 구성에서 수행 할 수있는 일에 어떤 제한이 있습니까?

답변

1

나는 다음 주석 클래스를 포함하는 패키지를 스캔 클래스와 메서드에 주석을 받고 그들에게 따라 XML을 작성하기위한 반사를 사용하여이 사용 봄을 할 것입니다.

스프링에서 스캔하는 클래스는 ClassPathScanningCandidateComponentProvider입니다. 사용 방법에 대한 코드 스 니펫은 다음과 같습니다.

ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false); 
scanner.addIncludeFilter(new AnnotationTypeFilter(Component.class)); 
for(String packageToScan : packagesToScan) { 
    for (BeanDefinition bd : scanner.findCandidateComponents(packageToScan)) { 
     Class clazz = Class.forName(bd.getBeanClassName()); 
     // Use reflection on clazz to write the XML file 
    } 
} 

이 정보가 도움이되기를 바랍니다.

+0

감사합니다. Felix. 거기에 올바른 주석을 모두 실제로 스캔 한 클래스가 있었고 xml을 구문 분석하여 생성 된 일부 오브젝트가 생성되어 주석 스캔 결과를 가져 와서 해당 오브젝트를 다음과 같이 변환 할 수 있었으면합니다. xml은 XML 버전을 만족시키는 데 필요합니다. 나는 당신이 생각하는 수업을 들러보고 그것이 어디서 생기는지를 볼 것입니다. –

+1

는 'ClassPathBeanDefinitionScanner'와 같은 모양으로 원하는 것을 제공 할 수 있습니다. –

+0

당신 말이 맞아요,이게 더 정확 해 보입니다. 정보 주셔서 감사합니다. –

관련 문제