2015-09-09 70 views
3

在使用xml配置的web應用程序中,您在web.xml中指定了您的應用程序上下文的位置,Spring可以創建您的bean。使用@Configuration它會掃描所有查找此批註的軟件包嗎?如何發現Spring @Configuration?

回答

2

請使用@ComponentScan批註與@Configuration指定基礎包,其中春季期待創造豆。

以下代碼指定如何在課堂級別使用@ComponentScan註釋。

@ComponentScan(basePackages = "basepackageName", 
       excludeFilters = 
        @ComponentScan.Filter(value = Controller.class, 
             type = FilterType.ANNOTATION) 

還實現WebApplicationInitializer接口和onStartup()的它初始化AnnotationConfigWebApplicationContext並註冊配置類如下所示

AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.register(Configuration.class);

這裏配置類含有@Configuration。 -

+0

,但是如何首先掃描@Configuration? – Oscar

+0

使用WebApplicationInitializer接口並覆蓋它的onStartup()。你必須初始化AnnotationConfigWebApplicationContext,指示spring使用基於註釋的配置。像AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.register(Configuration.class);這裏配置類包含@Configuration。 –

+0

而不是在註釋中轉儲代碼,將它們添加到答案中。 –

0

您必須在您的spring配置文件中指定要掃描的軟件包。

像這樣:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 

    <context:component-scan base-package="your.package" /> 

</beans> 
+0

所以至少我必須在XML中有這樣的?然後它對我來說沒有任何意義@ComponentScan註釋,這將是reduntant – Oscar

+0

如果您使用@ComponentScan,那麼tyou不需要xml配置。你沒有告訴你在哪裏使用它:) – Jkike

+0

但是,如果你使用@ComponentScan它是如何被發現的第一個地方? – Oscar

相關問題