Подтвердить что ты не робот

Использование @ComponentScan или <context: component-scan/"> только с одним классом

Я поддерживаю проект с двумя наборами основных пакетов, проект использует Spring и Spring MVC, один из этих пакетов содержит несколько контроллеров и сканируется с использованием конфигурации XML (<context:component-scan />).

Проблема в том, что в другом пакете (не сканированном) есть один класс, и мне нужен этот класс для сканирования, но только этот класс и ничего больше в пакете. Теперь я не могу изменить свой пакет, так как теперь он будет слишком рискован.

Итак, есть ли способ сделать это с помощью аннотаций или XML?

4b9b3361

Ответ 1

Просто добавьте как bean к вашему контексту, например.

<bean class="my.package.MyClass" />

Ответ 2

Что сказал @Bart для XML.

Если вам нужно вытянуть один класс с помощью аннотаций, добавьте следующее в один из классов @Configuration

@ComponentScan(
    basePackageClasses = YourClass.class, 
    useDefaultFilters = false,
    includeFilters = {
        @ComponentScan.Filter(type = ASSIGNABLE_TYPE, value = YourClass.class)
    })

Ответ 3

Вам нужно использовать фильтры для фильтрации других классов и просто включить свой класс, который вы хотите отсканировать

<context:component-scan base-package="com.abc" >

    <context:include-filter type="regex" 
                   expression="com.abc.customer.dao.*DAO.*" /> 

</context:component-scan>