快捷搜索: 王者荣耀 脱发

Spring @Component 找不到bean | 大小写问题

使用@Component注解类时,容易出现以下错误:org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named userserviceImpl available
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:863)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1344
Process finished with exit code 1

我们都知道Spring会帮我们自动修改大小写,使得我们能够通过id找到该类 那究竟它的规律是什么呢?

Spring使用注解自动装配bean时 getBean()寻找文件名规律:

    类名首字母大写的 (如UserServiceImpl) 使用 首字母小写,其他不变 如(context.getBean("userServiceImpl")) 类名首字母是小写,其他是首字母大写的 如(userServiceImpl) 使用 原类名 如(context.getBean("userServiceImpl")) 注意点:
若首字母大写的只需将首字母改为小写即可,其余单词照搬


扩展:

    web开发,提供3个@Component注解衍生注解(功能一样) @Repository(“名称”):dao层 @Service(“名称”):service层 @Controller(“名称”):web层 @Autowired:自动根据类型注入 @Qualifier(“名称”):指定自动注入的id名称 @Resource(“名称”) @PostConstruct 自定义初始化 @PreDestroy 自定义销毁
@autowire通过byType实现,而且必须要求这个对象存在 @resource默认通过byName实现,如果找不到,通过byType实现
经验分享 程序员 微信小程序 职场和发展