You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot桥接模式示例中依赖注入匹配逻辑的疑问

关于Spring Boot中桥接模式Bean匹配逻辑的解答

1. Notification与对应Sender的匹配逻辑

Spring处理同类型多Bean的依赖注入时,默认优先通过构造方法参数名与Bean名称匹配。

你的示例里,AppConfig中创建EmailSender和SmsSender的方法名(默认就是Bean的名称)应该是emailSender和smsSender。如果EmailNotification的构造方法参数是Sender emailSender,SmsNotification的构造方法参数是Sender smsSender,Spring就会把名称为emailSender的Bean注入到EmailNotification中,smsSender则注入到SmsNotification。

如果参数名和Bean名不匹配,也可以用@Qualifier注解指定目标Bean名称,示例代码:

public EmailNotification(@Qualifier("emailSender") Sender sender) {
    this.sender = sender;
}

2. NotificationController中区分两个Notification实现类

逻辑和上面完全一致:如果NotificationController的构造方法参数是Notification emailNotification和Notification smsNotification,Spring会自动匹配名称为emailNotification和smsNotification的Bean(Bean名称默认是创建它们的方法名,也可以通过@Bean(name="xxx")手动指定)。

要是不想依赖参数名,同样可以给参数加@Qualifier注解明确指定,示例代码:

public NotificationController(@Qualifier("emailNotification") Notification emailNoti, 
                              @Qualifier("smsNotification") Notification smsNoti) {
    this.emailNoti = emailNoti;
    this.smsNoti = smsNoti;
}

补充:如果同类型Bean中有一个被标记为@Primary,Spring会优先注入该Bean,但你的场景需要区分两个实现,所以不会用到这个注解。

内容的提问来源于stack exchange,提问作者Ulises CT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:20:56