gpt4 book ai didi

spring - 有条件的@Autowired?

转载 作者:行者123 更新时间:2023-12-04 11:27:48 34 4
gpt4 key购买 nike

我有一个我 Autowiring 的 HsqldbReconciler(用于与 HSQLDB 数据库“工作”),例如:

@Autowired
HsqldbReconciler hsqldbReconciler;

将来会有 OracleReconciler、MssqlReconciler 等。我需要根据用户选择的连接类型来使用它们。

我应该如何实现?通常我会有一种工厂,它只返回所需的协调器。我目前可以想象,spring 的唯一方法是 Autowiring 每个 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;
}

}

}

现在使用这个工厂如下
class SomeClass{

@Autowired private Factory factory;

public Object someMethod(){
Object reconciler = factory.getInstance("mssql");
((MssqlReconciler)reconciler).someMethod();
}
}

关于spring - 有条件的@Autowired?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39054789/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com