use*_*485 3 java dependency-injection autowired spring-boot
假设我有以下设置,一个接口有一个方法“ addTaxTrans()”
public interface TaxTransInterface {
Response<Map<String, Object>> addTaxTrans(Long sessionId, TaxMap taxMap);
}
Run Code Online (Sandbox Code Playgroud)
我用此接口实现了两个类。
客户1的首次抵押
@component
public class Client1TaxImpl implements TaxTransInterface{
@Override
public Response<Map<String, Object>> addTaxTrans(Long sessionId,
TaxMap taxMap) {
// Common code + client 1 customization code
}
}
Run Code Online (Sandbox Code Playgroud)
客户端2的第二种实现
@component
public class Client2TaxImpl implements TaxTransInterface{
@Override
public Response<Map<String, Object>> addTaxTrans(Long sessionId,
TaxMap taxMap) {
// Common code + Client 2 customization code
}
}
Run Code Online (Sandbox Code Playgroud)
下面是服务的实现,因此这里我自动连接TaxTransInterface并调用addTaxtrans方法。
@Service.
public class TaxSerImpl implements TaxSer {
@Autowired
private TaxTransInterface taxTransInterface;
@Override
@Transactional(rollbackFor = Exception.class)
public Response<Map<String, Object>> addTax(TaxReq taxReq) {
// Calling Trans Function
return taxTransInterface.addTaxTrans(taxReq.getSessionId(),
taxReq.getTaxMap());
}
}
Run Code Online (Sandbox Code Playgroud)
截至目前,我无法运行该项目并出现以下错误:-
Field taxTransInterface required a single bean, but 2 were found:
Run Code Online (Sandbox Code Playgroud)
我知道会出现此错误,因为接口“ TaxTransInterface”有两个实现
因此,当我通过配置文件client1的以下命令运行应用程序时,我们是否有任何动态选择
java -jar -Dspring.profiles.active=client1 sbill-0.0.1-SNAPSHOT.war
Run Code Online (Sandbox Code Playgroud)
然后应动态注入“ Client1TaxImpl”,并在为client2运行应用程序时应注入“ Client2TaxImpl”。
有什么建议么 ?
提前致谢。
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |