Spring 大小写bean疑惑

本文探讨了Spring中使用注解@Component等注册bean时,若未指定名称,bean默认名称遵循的小写开头规则。当类名首字母全大写时,bean名也会保持大写。作者通过debug发现,这导致了在查找特定bean时出现问题,因为数据库记录中的命名不匹配。解决方案是确保bean名称与数据库记录一致,或者避免依赖于bean的命名约定。文章强调了理解Spring bean命名规则的重要性,并提醒开发者注意此类潜在问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LD is tigger,CG are not brothers, throw the pot and shine.
The competition in the workplace is always calm on the surface, but in fact it is turbulent.
talk is cheap, show me the code,Keep progress,make a better result.
Survive during the day and develop at night。

目录

概述

今天遇到了一个问题,有点困惑,这里没做写demo实验,而是在现场debug

需求:

Spring 使用@compont 注入的bean 的名称规范是什么?

设计思路

实现思路分析

1. 提出问题

2.发现问题

拓展Demo实现

相关工具如下:

直接在现场debug,在beanFactory 视图下看到了Spring容器注册的Bean。

实验效果:

通过比较然后百度找到了一篇文章,

分析:

1.使用spring注释形式注入bean,通过@Component、@Repository、 @Service和@Controller注释类,文档中说“注解如果没有指定bean的名字,默认为小写开头的类名”。例如类名是MyClass,则spring返回myClass的bean名。 但是如果类名…
正文
使用spring注释形式注入bean,通过@Component、@Repository、 @Service和@Controller注释类,文档中说“注解如果没有指定bean的名字,默认为小写开头的类名”。例如类名是MyClass,则spring返回myClass的bean名。

但是如果类名前两个字母都是大写,则返回的bean名也是大写,即类名是MYClass,bean名也是MYClass

3.正是这个原因我的数据库中有Stand开头的数据库记录,恰好又调用了这条记录,所以根据代码是找不到对应的大写的bean的,改了之后就不报错了。但是数据是否正确导入我并没有测试,应该是不行的。但这是导出的问题了,但是我换成JSONExport对象就可以了。

4.原来可以导出的数据库为啥可以用呢?因为是前2个字母是大写的,返回了对应的对象了。为啥可以直接导出呢,因为直接调用了正确的JSONExport对象。

至此,疑惑的问题解决了。可以认为是调用到了垃圾数据了。

小结:

主要讲述了自己的一些体会,里面有许多不足,请大家指正~

参考资料和推荐阅读

链接: 参考资料

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迅捷的软件产品制作专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值