2017-01-03 3 views
1

У меня есть класс Spring конфигурации Java, который определяет компонент внутри, например:классы Spring @Configuration, как настроить несколько экземпляров одного и того же компонента проходя различные параметры

@Configuration 
public class SomeConfig{ 

    private String someProperty; 

    public SomeConfig(String someProperty){ 
     this.someProperty=someProperty; 
    } 

    @Bean 
    public SomeBean someBean(){ 
     SomeBean s = new SomeBean(someProperty); 
     return s;  
    } 
} 

Мне нужно иметь несколько экземпляров SomeBean , каждый из которых настроен с другим значением someProperty.

  1. В приложении для загрузки весны можно до @Import одного и того же класса несколько раз? SELF-ANSWERED: Если вы импортируете тот же класс @Configuration, он переопределит существующий.
  2. Как можно сделать это с помощью Spring Java Config?

UPDATE:

В XML можно сделать:

<bean class="x.y.z.SomeBean"> 
    <constructor-arg value="1"/> 
</bean> 
<bean class="x.y.z.SomeBean"> 
    <constructor-arg value="2"/> 
</bean> 

Я ищу эквивалент с Java Config

+0

Посмотрите на 'FactoryBean' –

+1

Я мог бы определить' @Bean FactoryBean 'но я до сих пор не понимаю, как задать различные значения SomeProperty. – codependent

+1

Если вы добавляете некоторые объекты бобов в другие бобы, вы можете определить их так: @Bean public SomeBean someBean (String someProperty) Итак, вы будете определять someBean один раз, и вы можете создать несколько объектов с помощью того же определения. – mokarakaya

ответ

2

Я просто должен был использовать другой @ Конфигурационный класс, который определял как много компонентов SomeConfig по мере необходимости:

@Configuration 
public class ApplicationConfig{ 

    @Bean 
    public SomeConfig someConfig1(){ 
     return new SomeConfig("1"); 
    } 

    @Bean 
    public SomeConfig someConfig2(){ 
     return new SomeConfig("2"); 
    } 
} 
0
@Configuration 
public class SomeConfig{ 

    private String someProperty; 

    @Bean 
    public OtherBean otherBeanOne(){ 
     OtherBean otherBean = new OhterBean(); 
     otherBean.setSomeBean(someBean("property1")); 
     return otherBean;  
    } 


    @Bean 
    public OtherBean otherBeanTwo(){ 
     OtherBean otherBean = new OhterBean(); 
     otherBean.setSomeBean(someBean("property2")); 
     return otherBean;  
    } 

    @Bean 
    public SomeBean someBean(String someProperty){ 
     SomeBean s = new SomeBean(someProperty); 
     return s;  
    } 


} 
+0

может не быть ответом на все вопросы, перечисленные в вопросе, но я надеюсь, что это поможет. – mokarakaya

+0

Благодарим вас за предложение, но дело в том, что мне нужно определить значения someProperty в config и иметь n экземпляров SomeBean без пакетов классов (OtherBean). – codependent

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