-
-
接下来我们看下这个注解。我们需要关注它里面的@SpringBootConfiguration,然后有一个@EnableAutoConfiguration最后一个是@ComponentScan。注意我们当前这个Application是在com.imooc这个包下,所以当我们的容器启动以后,它会扫描当前我们这个包下所有的类以及所有子包的类。比方说这个包下面有dao层,有service层都会被@ComponentScan扫描到。当然,我们现在加了一个@RestController在它的子包controller下面,所以它又会被我们的Application我们的容器去扫描到。
-
然后我们看下@SpringBootConfiguration,那么可以看到它是一个接口,这个接口的主要的配置是一个@Configuration,代表了它是一个容器,是一个IOC容器,
-
另外,@EnableAutoConfiguration,它是用来开启自动装配的,点进去然后它里面有个@Import,它就是用于去做导入的,就是把一个个的@Configuration导进去,把容器导进去。然后我们需要看@Import上面的AutoConfigurationImportSelector.class,它是一个自动装配的用于去做导入的选择器,既然是一个选择器,它就有可能包含很多的内容,比如举例子,jQuery的选择器,可以批量选择很多东西,在这里是一样的,它可以选择很多自动装配的类。点击这个AutoConfigurationImportSelector看看,这个类里面有很多方法,我们看selectImports这个方法,然后方法里面有个getAutoConfigurationEntry,这个是用于去获得自动装配的类。进去后,会看到有个语句得到了List configurations,那么这个就是配置,它是放到了list里面的。 接下来看getCandidateConfigurations这个方法, 这里有个断言,如果configurations为空的话,可能会报异常,重点信息是
META-INF/spring.factories