同事一小时没解决的问题,被 New Bing 秒解了

作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。

热门文章推荐

  • (1)《人工智能时代,软件工程师们将会被取代?》
  • (2)《超全人工智能 AI工具导航网站合集》
  • (3)《如何写出高质量的文章:从战略到战术》
  • (4)《我的技术学习方法论》
  • (5)《什么? 你还没用过 Cursor? 智能 AI 代码生成工具 Cursor 安装和使用介绍》
  • (6)《我的性能方法论》
  • (7)《AI 时代的学习方式: 和文档对话》
  • (8)《人工智能终端来了,你还在用过时的 iterm?》

一、背景

上周有一个同事遇到了一个非常诡异的问题,对接某个下游系统接口时,创建某个 Bean 使用 @Service 声明后注入到另外一个 Bean 中,使用时出现空指针。也就意味着 Spring 的 Bean 工厂中并没有这个 Bean。
由于根据经验加上 @Service 注解 Bean 的声明肯定没问题,而且 bean name 也没问题,此外公司内部对 Spring 进行二次封装还有一些其他配置,排查了半天。最终几个人一起排查解决掉了。
同事一小时没解决的问题,被 New Bing 秒解了_第1张图片
解决完毕之后,想起来为啥不尝试问 New Bing 呢,发现问 New Bing 的话瞬间就可以解决这个问题。

二、使用 New Bing 秒解

使用 New Bing 提问一次或两次就很快解决了这个问题。

使用 Spring 进行项目开发,某个 Bean 已经通过 @Service 注解进行标注,但是 Bean 工厂里没有这个 Bean ,有哪些原因?

同事一小时没解决的问题,被 New Bing 秒解了_第2张图片
我可以帮你找到一些可能的原因为什么你的Bean没有被Bean工厂识别。根据搜索结果,有以下几种可能:

  • 你的 Bean 没有被 Spring 扫描到,你需要检查你的 @ComponentScan 注解是否包含了你的 @Service 注解所在的包。
  • 你的 Bean 没有实现一个接口,或者实现了多个接口,导致 Spring 无法确定它的类型。你需要指定一个主要的接口或者使用 @Primary 注解来标注一个优先的实现类。
  • 你的 Bean 是一个非自定义的类,比如第三方库中的类,你需要使用 @Bean 注解来在一个配置类中创建它的实例,并交给 Spring 管理。
  • 你的 Bean 依赖了其他的 Bean,但是其他的 Bean 没有被正确地初始化或者注入。你需要检查你的@Autowired 注解是否正确使用,或者使用 @DependsOn 注解来指定依赖关系。

我检查了项目没有 @ComponentScan 注解,其他的 bean 都是通过 xml 进行配置的都正常 ,就这个 bean 使用 @Service 声明的,无法识别,是什么原因

同事一小时没解决的问题,被 New Bing 秒解了_第3张图片

根据你的描述,我猜测你的项目是使用 xml 配置的 Spring 容器,而不是注解配置的。如果是这样的话,你需要在你的xml配置文件中添加 标签,来指定扫描你的 @Service注解所在的包。
例如,如果你的 @Service注解在 com.spring.quickTest包下,你需要在xml文件中添加如下内容:

这样,Spring 就能够识别你的 @Service 注解,并将其注册为一个 Bean。

最后发现,和我们自己排查的结论类似,该模块确实没有配置 因此不支持通过注解来声明 bean。

三、总结

看完问题之后,很多同学或许会认为这也不难啊。其实很多奇奇怪怪的问题都是这样,当你解决之后的确不难,但遇到问题时,可能会受到其他线索干扰,很可能没有第一时间想到这个问题。

人工智能时代已经来临,但是我们不自觉的还是会使用传统的方式来解决问题
同事一小时没解决的问题,被 New Bing 秒解了_第4张图片
做一个真正 AI 时代的程序员,我们在遇到一些奇奇怪怪的,一些不容易解决的问题,没有明确的思路时,可以优先考虑问 AI 工具,解决不了时再考虑请教别人。


创作不易,如果本文对你有帮助,欢迎点赞、收藏加关注,你的支持和鼓励,是我创作的最大动力。
在这里插入图片描述

你可能感兴趣的:(AI,助力软件开发,工具使用,问题积累,java,spring,开发语言)