启动项目,编译报错:Consider defining a bean of type 'XXX' in your configuration.

在controller层注入ConfigBean,编译器报错:

 

一开是以为是intellij idea 的告警级别设定的问题,就没有在意,继续启动项目,结果控制台报错:Consider defining a bean of type 'XXX' in your configuration.

 

错误信息显示找不到这个Bean类。 但是我明明写了啊。

 

后来经过一番查找,大概有了如下理解:
主要问题出在@SpringBootApplication 这个注解上。

 

点进这个注解,可以看到,此注解功能大概由下面多个注解构成,其中有个@ComponentScan

 

@ComponentScan这个注解主要就是定义扫描的路径,从中找出标识了需要装配的类自动装配到spring的bean容器中。(我理解这个标识最根本就是@Component注解。那为什么之前日日coding的@Controller、@Service 也能被自动扫描进容器呢---因为点进这几个注解,查看源码就会发现他们有一个共同注解,就是@Component,它用于没有明确角色的组件。(啊,过去的2年真的是不求甚解啊。。写了两年并不知道)。。。。。。)。

而我之前写的ConfigBean并没有加任何注解,所以就扫描不进啦。
加上注解@Component,项目启动成功~!

问题解决了,接下来敲黑板,总结一下知识点:
1.启动类Application中的@SpringBootApplication注解的功能之一是定义扫描路径,找到需要配置的类(@ComponentScan注解)。
2.声明Bean的注解有:
@Component 没有明确角色的组件
@Service 在业务逻辑层(Service层)使用 -----源码包含@Component
@Controller 用于标注控制层组件 -----源码包含@Component
@RestController -----源码包含@Controller -----源码包含@Component

posted @ 2018-11-13 17:40  小芒果Mangogo  阅读(17933)  评论(0编辑  收藏  举报