tob*_*obi 5 spring factory autowired
我有一个我自动装配的 HsqldbReconciler(用于与 HSQLDB 数据库“工作”),例如:
@Autowired
HsqldbReconciler hsqldbReconciler;
Run Code Online (Sandbox Code Playgroud)
将来会有 OracleReconciler、MssqlReconciler 等。我需要根据用户选择的连接类型来使用它们。
我应该如何实施?通常我会有一种工厂,它只返回所需的协调器。我目前可以想象,spring 的唯一方法是自动装配每个 Reconciler 的一个实例,然后在代码中使用其中一个。有没有更好的办法?
创建一个包含所有 bean 的工厂类,例如
@Component
class Factory{
@Autowired HsqldbReconciler hsqldb;
@Autowired OracleReconciler oracle;
@Autowired MssqlReconciler mssql;
public Object getInstance(String type){
switch(type){
case "mssql" : return mssql;
case "oracle" : return oracle;
// and so on
default : return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在使用这个工厂如下
class SomeClass{
@Autowired private Factory factory;
public Object someMethod(){
Object reconciler = factory.getInstance("mssql");
((MssqlReconciler)reconciler).someMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6251 次 |
| 最近记录: |