2013-09-09 5 views
3

Я обычно использую конфигурацию XML Spring (пружина-conf.xml) за это так:Есть ли способ объявить два экземпляра весенних бобов из того же класса с аннотацией?

<beans> 

    <context:component-scan base-package="org.company.dept.business" /> 
    ... 
    <bean id="myServiceB2B" class="org.company.dept.business.service.MyService" 
     p:configLocation="WEB-INF/classes/b2b.properties" /> 

    <bean id="myServiceResidential" class="org.company.dept.business.service.MyService" 
     p:configLocation="WEB-INF/classes/residential.properties" /> 
    ... 

</beans> 

Потому что есть только один файл (определение) класс MyService есть способ для создания экземпляра два beans без использования конфигурации Spring Spring?

Я в порядке с определением XML, но я всегда стараюсь максимально свести к минимуму мою конфигурацию XML.

ответ

11

Точно так же вы использовали бы объявления 2 <bean> в XML, вы используете 2 @Bean аннотированные классы в конфигурации Java.

@Configuration 
public class MyConfiguration { 
    @Bean(name = "firstService") 
    public MyService myService1() { 
     return new MyService(); 
    } 

    @Bean(name = "secondService") 
    public MyService myService2() { 
     return new MyService(); 
    } 
} 

Я не знаю, что configLocation это, но вы определенно можете включить, что в конфигурации Java, а также.

Атрибут name@Bean эквивалентен атрибуту id<bean>.

+0

Спасибо, это именно то, что я хотел. Я проверил в документе, что он может поддерживать автоподключение (например, ввести службу или другой компонент в конфигурацию): отлично! –

+0

Это не работает с @EnableAutoConfiguration – Patrice

+0

@Patrice Я не очень хорошо знаком с Spring Boot, но я не понимаю, почему это не должно работать. Если у вас есть полный и воспроизводимый пример этого сбоя, задайте новый вопрос, и мы постараемся помочь. –

2

Если вам нужно несколько экземпляров компонента, вы должны явно сконфигурировать их либо в XML, либо в аннотированном классе @Configuration. В любом случае вам нужно каким-то образом явно определить компоненты, вы не сможете иметь несколько экземпляров только при сканировании компонентов.

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