2011-11-14 70 views
2

由於Google App Engine會定期啓動和停止實例,這意味着會定期招致冷啓動時間,所​​以我想使用XML配置我的Spring MVC3應用程序,以避免掃描類文件導致的3-5秒延遲在新實例啓動時使用註釋配置時的註釋。如何使用spring MVC註解來創建xml配置文件?

但是編寫xml有點麻煩,而且使用註釋來定義我的配置要容易得多。所以我希望兩全其美,並使用註釋來生成配置文件,然後在運行時關閉掃描。從this question似乎沒有任何現有的工具可以做到這一點。

那麼最好的方法是什麼?據推測,有一個類可以在運行時在春季進行掃描,可以在設計時重新掃描,然後吐出xml?

對於xml配置中無法實現的註釋配置可以做的事情有什麼限制嗎?

回答

1

我會使用Spring來掃描包含註釋類的包,然後使用反射獲取類及其方法的註釋,並相應地向它們寫入XML。

在Spring中進行掃描的類是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

謝謝菲利克斯。我希望有一個類實際上已經掃描了所有正確的註釋,並生成了一些也是通過解析xml生成的對象,我將能夠獲取註釋掃描版本的結果並將其對象轉換爲需要滿足xml版本的xml。我會看看你建議的班​​級,看看它給我帶來了什麼。 –

+1

看起來像'ClassPathBeanDefinitionScanner'可能會給我我想要的 –

+0

你是對的,這看起來更準確。謝謝(你的)信息。 –

相關問題