网上这样的文章,其实已经太多了,但是我都觉得讲的不够直白,我曾经也困惑其中
首先,我们要明白,自动装配是什么,自动装配就是我们无须用繁琐的xml文件去配置bean和bean之间的关系,只需要通过一些@bean,@service,@component的注解,springboot就能自动的去帮我们把这些bean给注入到spring容器中。
首先,我们的springboot主类有个注解叫@springbootApplication,这个注解是个复合注解,由三个注解组合而成,而其中一个注解就是@EnableAutoConfiguration,就是这个注解,开启了自动扫描的功能。
第一种情况,就是我们自己写代码的项目中需要自动装配,这个时候我们要把自己认为需要用到的bean都给注入其中,比如普通bean可以定义一个@configuration的类文件,@bean用于方法上,那如果是controller,就用@Controller,服务层,就用@Service,Dao层用@Repository,如果只是个普通的组件,直接@Component,其实这些注解本质上区别不大,都是把对象注入到容器中,只是语义的区别,我们更清晰明了当前类的作用。
第二种情况就是,我们引用了别的jar,比如那些个starter,或者自己也可以自定义一个starter,这个时候,我们的当前应用是无法扫描到那些starter的注解的,有一句话叫做:约定大于配置,意思就是我们约定好一个规则,大家都去这么做,就可以实现这个功能,这个规则就是在jar包的根目录下,有个目录叫做:META-INF,这个目录下面有个spring.factories文件,里面的信息,就是需要注入的类或者一些配置类,springboot就会去把这里面的东西全部加载出来,然后一一去解析注入。