Spring报错:找不到'myController' Bean,已试ComponentScan和Configuration无效
Spring框架NoSuchBeanDefinitionException问题排查
错误信息
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'myController' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:893) at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1318) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1155) at sumit.springframework.sfgpetclinic.SfgDiApplication.main(SfgDiApplication.java:17)
已尝试方案
已使用@ComponentScan和@Configuration注解,但问题仍未解决,项目仓库地址:https://github.com/jerry2132/sfg-di
排查建议
- 确认
@ComponentScan的扫描范围:如果未指定basePackages属性,默认扫描配置类所在包及其子包,检查myController所在包是否在该范围内。 - 检查
myController类的注解:确保类上标注了@Component、@Controller等Spring stereotype注解,否则Spring不会将其注册为Bean。 - 验证配置类加载:确认启动类初始化ApplicationContext时,正确传入了配置类;如果是Spring Boot项目,检查启动类是否标注了
@SpringBootApplication(该注解包含@ComponentScan和@Configuration)。 - 核对Bean名称:确认获取Bean时使用的
myController与实际注册的Bean名称一致,默认Bean名称为类名首字母小写,若自定义了名称需匹配。
内容的提问来源于stack exchange,提问作者Sumit Singh Rawat
相关产品推荐
相关产品推荐

