前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IntelliJ中Spring识别BUG

IntelliJ中Spring识别BUG

作者头像
w4ngzhen
发布2023-10-16 21:43:00
1030
发布2023-10-16 21:43:00
举报
文章被收录于专栏:编译思想编译思想

最近开始学习Spring,在看《Spring实战4th》3.3“处理自动装配的歧义性”那一部分时,书上提到(也从网上看到了类似的用法): 通过在一个类上加注@Component以及@Qualifier(“x”)可以为其配置限定符来标识区分同一个接口下的不同实现类,用以在需要进行@Autowired自动装配的地方使用@Qualifier(“x”)来指定特定的实现类对象bean。

但是本人在练习过程中,IntelliJ通过上述方式识别不了,只能在@Bean处添加@Qualifier(“x”),在后续的测试中才能识别。如下:

在Dessert的实现类Cake上加上@Component以及@Qualifier(“Lovely”)

代码语言:javascript
复制
@Component
@Qualifier("Lovely")
public class Cake implements Dessert { }

然后是配置类

代码语言:javascript
复制
@Configuration
public class JavaConfig {
    @Bean
    Dessert cake() {
        return new Cake();
    }

    @Bean
    Dessert iceCream() {
        return new IceCream();
    }
}

测试类中无法识别:

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = JavaConfig.class)
public class PlateTest {
    @Autowired
    @Qualifier("Lovely") // IDEA 提示"Cannot find bean with qualifier 'Lovely' "
    Dessert dessert;

    @Test
    public void testNotNull() {
        Assert.assertNotNull(dessert);
    }
}

但是,测试能PASS,应该是IntelliJ中的识别BUG。虽然是一个BUG,但是个人的理解是推荐在配置Bean中,进行限定,而不是在每一个类处进行限定。如下在JavaConfig类中进行配置:

代码语言:javascript
复制
@Bean
@Qualifier("Lovely")
Dessert cake() {
  return new Cake();
}

这样就不会出现报提示错。 以上在运行过程均没有错误,只是IDE辅助出现了问题。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-072,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com