你在這裏是做什麼的,自動裝配類建設淺析,爲阿維亞德說,你可以使用setter和getter方法爲您的數據源注射
<bean id="foo" class="FooClass">
<constructor-arg index="0">datasource</constructor-arg>
...other constructor args
</bean>
<bean>your datasource bean1</bean>
<bean>your datasource bean2</bean>
在您的實現,您可以設置數據源,如下
@Autowire
private FooClass foo;
foo.setDataSource(datasourcebean1);
你fooClass
public void FooClass(Datasource datasource){
private Datasource datasource;
public void setDatSource(Datasource datasource);
public Datasource getDataSource();
}
EDIT-按照Spring文檔,如果它的值沒有改變,你可以傳遞構造函數參數。但是對於FooClass來說,你希望在不同的場合傳遞不同的數據源(希望我能正確得到它),所以在這種情況下,你需要在spring初始化時傳遞datasource實例或者datasource1或者datasource2,因爲Spring會期望構造函數參數同時初始化FooClass。稍後在運行時傳遞不同的數據源並使用setter方法設置數據源。
豆Spring配置
<bean id="foo" class="FooClass">
<constructor-arg index="0" ref="datasource1"></constructor-arg>
...other constructor args
</bean>
public class FooClass(){
// on spring initialization, it will inject datasource1
public void FooClass(DataSource dataSource){
}
have your setter and getter method for datasource
}
凡在你的呼叫服務
public class dataBaseInvoke(){
public Datasource datasource2
public FooClass fooClass;
inside method{
fooClass.setDatasource(datasource2);
fooClass.addFoo();
}
}
另一點,我當時無法使用註釋配置必須是在XML –