Можно ли переопределить весенние бобы, созданные с помощью компонентного сканирования? - PullRequest
4 голосов
/ 20 мая 2010

Если я использую компонентное сканирование в Spring 2.5, но также определяю контроллер в xml.

Получу ли я два экземпляра этого компонента в контексте моего приложения? Если так, какой экземпляр будет вызван для связанных с ним RequestMappings?

<bean id="myController" class="domain.MyController">
         <property name="filters">
            <list>
                <ref local="filter1"/>
                <ref local="filter2"/>
            </list>
        </property>        
    </bean>

Ответы [ 3 ]

1 голос
/ 24 мая 2010

Если вы запрашиваете у Spring bean-компонент данного интерфейса, и у вас есть два bean-компонента этого интерфейса, вы получаете исключение из контейнера Spring.

Исключением из этого правила является то, что ваш компонент помечен @Primary или для основного компонента XML задано значение true.

0 голосов
/ 20 мая 2010

Я сделал это случайно раньше, и это обычно приводит к нескольким контекстам приложения. Хотя все выглядело так, как будто оно работало нормально, такие мелочи, как изменения базы данных, которые никогда не фиксировались, обычно заставляли меня отследить это.

0 голосов
/ 20 мая 2010

Хороший вопрос, я не уверен. Я предполагаю, что тот, кто объявлен первым, побеждает. Таким образом, если ваш <context:component-scan> будет первым, автоматически обнаруженный компонент получит запрос. Если ваш <bean> на первом месте, тогда он побеждает.

Если вы сомневаетесь, проверьте это, это не должно быть трудно узнать.

Лучшим решением было бы явное исключение компонента из сканера с использованием вложенных фильтрующих элементов <context:component-scan>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...