主启动类
得到config并生成类保存使用
首先找到怎么加载配置类的,我们先分析run方法,应为这里面会得到从META-INF/spring.factories这个路径得到config类的方法:
这里进入:this.setListeners(this.getSpringFactoriesInstances(ApplicationListener.class));的getSpringFactoriesInstances方法
META-INF/spring.factories
可以看到这一句就得到了该文件中的配置资源类config的路径,并加载其类:
Enumeration urls = classLoader != null ? classLoader.getResources(“META-INF/spring.factories”) : ClassLoader.getSystemResources(“META-INF/spring.factories”);
我们可以去看一下spring.factories这个文件:
可以看到这个文件下面包含了很多的configuration的文件路径,这就是springboot给我们配置的一战式开发的所用config!!
下面我们可以去分析下里面的配置类:
1、可以看到@ConditionalOnClass({KafkaTemplate.class})这个注解表示注入了里面的类才会让该类生效,就是要导入pom
2、再看这个注解@EnableConfigurationProperties({KafkaProperties.class}),这里会得到我们配置的yml里面的参数:
进入KafkaProperties这个配置类:
可以看到这个类的属性参数就是我们在yml里面配置了的参数
二、分析@SpringBootApplication注解
@SpringBootConfiguration
表示的是自己为注解配置类!
@EnableAutoConfiguration
@AutoConfigurationPackage
可以看到这里是调用了spring的注册bean的方法:参考
@Import({AutoConfigurationImportSelector.class})
可以看到这里会得到候选的配置类!!!