2015-09-09 3 views
3

В веб-приложении, использующем конфигурацию xml, вы указываете в web.xml, где ваш контекст приложения так Spring может создать ваши компоненты. Используя @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

Необходимо указать пакет для сканирования в конфигурационном файле весны.

Как это:

<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, тогда вам не нужна конфигурация xml. Вы не сказали, где его использовать :) – Jkike

+0

Но если вы используете @ComponentScan, как он будет обнаружен в первую очередь? – Oscar

Смежные вопросы