java spring @Service 把service注入到spring容器里失败是怎么回事
如题,我
这样注释,执行
不行,报错了
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'eContractsDealScheduleItemImpl' is defined
但是我在@Service里加个value就不会,能找到这个注入的bean,网上说不加的话默认注入的别名就是当前类名开头小写的
这个是什么原因呢?
回答:
你的前两个字母都是大写的,在Spring的名称生成策略里,你这个类生成的bean id应该是EContractsDealScheduleItemImpl
,只有在EaaaCon~这种(大写后是小写)才会把第一个字母变为小写
回答:
Spring中@Service中value的默认值是按照驼峰方式将类名的首字母小写接后半部分的方式作为Spring容器的bean id的,如MyService默认的bean是myService。而Spring没有想象中那么聪明,当Spring判断这是一个驼峰命名的类时,它会乖乖地按照既定规范初始化bean并装配,当Spring认定某个初始化类未遵循驼峰命名规范时,在扫描bean组件的时候拒绝提供门票,因此容器中不存在该Service bean id注入失败。因为Spring在处理驼峰命名的时候会匹配首字母为[A-Z]然后匹配[a-z]当然是一个匹配规则就不通过,因为匹配规则没有匹配到,所以不能注入。
以上是 java spring @Service 把service注入到spring容器里失败是怎么回事 的全部内容, 来源链接: utcz.com/p/170208.html