gpt4 book ai didi

spring - 如何按名称覆盖 Spring 服务 bean,仅使用注释

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

鉴于我有一个 Spring bean 配置为

@Service("myService")
public class DefaultService extends MyService {
}

和一个使用这个 bean 的类
public class Consumer {
@Autowired
@Qualifier("myService")
private MyService service;
...
}

我现在希望我的项目(包括前面的类)具有 Consumer MyService 的另一个实现被注入(inject)。因此我想覆盖 bean myService
@Service("myService")
public class SpecializedService implements MyService {
}

导致 Consumer现在携带 SpecializedService 的实例而不是 DefaultService .根据定义,我不能在 Spring 容器中拥有两个同名的 bean。我怎么能告诉 Spring ,新服务的定义将覆盖旧服务?我不想修改 Consumer类(class)。

最佳答案

要么明确定义服务 bean

<bean id="myService" class="x.y.z.SpecializedService" />

或组件扫描它。

无论哪种情况,在您的应用程序上下文中,避免显式定义 DefaultService 并避免组件扫描它。

关于spring - 如何按名称覆盖 Spring 服务 bean,仅使用注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5576128/

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