Mein spezifisches Problem ist, dass ich zwei Beans konfiguriert habe, die die gleiche Schnittstelle implementieren, und ich habe eine dritte Bean, die eine Eigenschaft des Typs dieser Schnittstelle hat. Ich injiziere die Eigenschaft mit einer Config-Eigenschaft. Also, vorausgesetzt RemoteDataSource und LocalDataSource IDataSource implementieren und dao1 hat eine Eigenschaft vom Typ IDataSource, könnte meine XML-Konfigurations wie folgt aussehen:Wie kann ich eine Autowired-Eigenschaft mit einer Variablen aus einer Konfigurationsdatei mithilfe von Anmerkungen qualifizieren?
<bean id="datasource1" class="com.foo.RemoteDataSource">
<property name="url">${url}</property>
</bean>
<bean id="datasource2" class="com.foo.LocalDataSource">
<property name="path">${filepath}</property>
</bean>
<bean id="dao1" class="com.foo.MyDAO">
<property name="dataSource">${datasource}</property>
</bean>
Mit url, filepath und Datenquelle in einer inkludierten Eigenschaften-Datei definiert werden. Wir machen nun einen Push für die Annotations-gesteuerte Konfiguration und ich bin mir nicht sicher, wie ich meinen Dao kommentieren soll, um die in der Eigenschaftendatei konfigurierte Datenquelle zu setzen. Ich möchte so etwas tun, aber es ist offensichtlich nicht erlaubt:
@Autowired
@Qualifier("${datasource}")
public void setDataSource(IDataSource datasource) {...}
NB: Diese Feder 3
Dies ist ein gutes Beispiel, denke ich, von einem Fall, wo Annotation Config nicht geeignet ist. XML und Annotationen arbeiten zusammen - nutzen Sie jedes für seine Stärken. – skaffman