回答
getBean()
是大小写敏感的,但是Spring使用定制的bean命名策略@Component
和@Bean
类。见4.10.5 Naming autodetected components:
当组件被自动检测作为扫描过程的一部分,由
BeanNameGenerator
策略生成bean名称[...]。默认情况下,包含name
值的任何Spring原型注释(@Component
,@Repository
,@Service
和@Controller
)都会将该名称提供给相应的bean定义。如果这样的注释不包含
name
值或用于任何其他检测到的成分(如那些由自定义过滤器发现),则默认bean名称发生器返回小写形式非限定类名。
而对于@Configuration
/@Bean
看到4.12.4.5 Customizing bean naming:
默认情况下,配置类使用
@Bean
方法的名称所产生的bean的名字。但是,此功能可以被覆盖,name
属性。
回到你的问题。因为你的类没有下面的Java命名约定(驼峰名)Spring使用不同寻常的名字为bean,这将工作:
getBean("TEST")
但是如果你使用的预期命名(@Component class Test { }
),您必须使用小写标识符:
getBean("test")
此外,如果你的名字是比较复杂的,小写形式驼峰语法适用(继续引用Spring documentation):
[...]例如,如果检测到下面的两个组成部分,名字是
myMovieLister
和movieFinderImpl
:
@Service("myMovieLister")
public class SimpleMovieLister {
// ...
}
@Repository
public class MovieFinderImpl implements MovieFinder {
// ...
}
感谢Tomasz。这比我的期望更复杂。如果我的类是类似@Component类的TestTree,我可以使用getBean(“testTree”)加载它吗? – user496949
@ user496949:正好。其实这并不复杂。您可能会使用同一个名称来存放一个类型为“TestTree”的变量。此外,你现在应该使用静态类型的'getBean(TestTree.class)' –
@Component
注释默认情况下,如果没有明确给出一个名称,将使用Introspector.decapitalize()
方法对bean使用AnnotationBeanNameGenerator
ClassName获取bean的名称。通常,名称类似“Test”的类将给它一个bean名称“test”。但decapitalize
具有好奇心:
这通常意味着从上部壳体小写转换的第一个字符到 ,但在(异常)的特殊情况下,当存在多于 一个字符,所述第一和第二字符大写, 我们保持独立。
所以你的class TEST
将得到豆名TEST
。
- 1. 春天没有的getBean(..)
- 2. 春天cacheManager不是单身?
- 3. 春天.getBean(...)在Struts应用程序,而不主要方法
- 4. 使用getBean而不是春季的方法注入
- 5. 春天 - 什么是豆,什么不是?
- 6. 什么春季豆类和春天的情况下使用?
- 7. 是否可以使用不敏感的情况过滤TClientDataset?
- 8. 检查如果文本是数组,但不是一个情况下,PHP敏感
- 9. 春天JPARepository不懒还是渴望
- 10. 春天@Value不是从属性文件
- 11. 找出一个人是如何感觉?
- 12. 部分只是没了感觉我
- 13. 春天是否支持SharePoint
- 14. 什么是春天的Hystrix?
- 15. 是不是在给定的情况下
- 16. 情况下钝感TXT
- 17. Solr的情况下钝感
- 18. 意外情况敏感
- 19. 骆驼春天是否与春天ws 2.0.2.RELEASE兼容?
- 20. 什么是春天2.5.6春之间的不同2.5.6.SEC01
- 21. rabbitmq与春天amqp - 消息卡住的情况下AmqpException
- 22. 用jpa和hibernate模拟春天mvc的情况
- 23. Rails 3 - RSpec感觉不对
- 24. vim的情况下,敏感不敏感的搜索替换
- 25. 春季整合是否适合这种情况?
- 26. 春天是不是自动装配我的过滤器类
- 27. 春天图片的URL是不是在ipad
- 28. 春天的布线是幅度不是名称
- 29. 春天ACL - 主/ SID不是用户,而是另一个实体
- 30. 春天XD文件作为源数据流的情况下不工作
你试过像这样加载bean吗? –