SpringBoot自动配置和自定义配置
@Import注解
对于下面的例子来说,MyConfig和OtherConfig里面有名字相同的Bean,运行的时候以MyConfig为主,因为Import注解会先解析OtherConfig配置类,然后再去解析MyConfig配置类,后面的解析会覆盖前面的解析。

实现DeferredImportSelector类
OtherConfig后执行,并且在OtherConfig里面有@ConditionOnMissingBean注解,因为先解析了MyConfig类里面的myBean,所以在解析OtherConfig的时候就不会覆盖。

SpringBoot相关源码
AutoConfiguration接口里面引入了AutoConfigurationImportSelector,先解析自定义的配置类,然后再去解析SpringBoot中的自动配置类,只有对应的Bean不存在的时候才会去解析SpringBoot里面的自动配置类


SpringBoot按需加载
SpringBoot中几乎对所有的功能都有自动配置类,包括数据库、SpringMVC等,在启动的时候并不是会把所有的配置全部进行加载,只会加载需要的自动配置。比如下面的代码@ConditionalOnClass注解,只有在pom.xml中引入了对应的依赖,才会加载对应的自动配置类,也就是会按需加载
SpringBoot扩展点
和Spring类似,SpringBoot可以在原来框架的基础上进行二次开发。比如:如果想要自定义类型转换器,在配置类里面添加Convertor并且实现convert方法
本文探讨了SpringBoot的自动配置和自定义配置的实现方式,包括@Import注解的解析顺序, DeferredImportSelector类的使用,以及如何通过@ConditionalOnClass注解实现按需加载。同时,讲解了SpringBoot的扩展点,如自定义类型转换器,并强调了配置类中Bean的覆盖规则。
21万+

被折叠的 条评论
为什么被折叠?



