在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