2016-05-25 12 views
0

Wie kann ich eine Bean extern unter Verwendung des Frameworks injizieren (keine Factory-Klasse erstellen)?Spring IoC: Bedingte Injektion in Laufzeit

Im folgenden Szenario werden beide childBeans bereits instanziiert, während sie in der Laufzeit je nach Bedingung in die primäre Bean injiziert werden.

<bean id=ChildBean1> 
<bean id=ChildBean2> 
<parentBean name='parentBean' lazy-init="true"> 
    <property name='flag'> 

    <somecondition flag=1/> 
    <property name='child' ref ='childBean1'/> 
    <somecondition flag=2/> 
    <property name='child' ref ='childBean2'/> 
</parentBean> 
+0

nachschlagen und Nutzungsprofile. –

Antwort

1

Sie können es über Federausdruckssprache tun (Spel):

<bean class="com.example.spring.TestBean"> 
    <property name="dependency" value="#{systemProperties['profile'] == 'test' ? dependencyA : dependencyB}" /> 
</bean> 

Auch ist es möglich, eine Java-Config so etwas wie unten verwenden:

@Bean 
public HelloBean helloBean() { 
    HelloBean helloBean = new HelloBean(); 
    if (condition) { 
     helloBean.setDependency(dependencyA()); 
    } else { 
     helloBean.setDependency(dependencyB()); 
    } 
    return helloBean; 
} 
+0

Hallo, danke, aber meine Anforderung ist die inject-Abhängigkeit dynamisch pro Transaktion basierend auf dem Fluss für diese Transaktion. –