简述 Spring Boot 自动配置魔法

一. 自动配置的魔法

@SpringBootApplication 注解由三个复合注解组成, @EnableAutoConfiguration 注解实现了Starter 组件的自动装配

spring.factories  文件包括了 需要的所有配置文件标注了@Configuration注解, @Bean注解bean 的全路径。

二.与自动配置有关的一些注解

 @ConditionalOnClass({Servlet.class ,DispatherServlet.class ,WebMvcConfigurerAdapter.class})

        这个自动配置生效条件是如果被提到的类在classpath中.

@ConditionalOnMissingBean(WebMvcConfigurationSuppot.class):

        这个自动配置生效条件是如果没有显示声明WebMvcConfigurationSuppot bean 

@AutoconfigureOrder(Ordered.HIGHEST_PRECEDENCE+10)

        这个指明了自动配置类的优先级.

举例 :来看下面代码片段

@ConditionalOnBean(ViewResolver.class) : 

        注解含义: 如果在classpath 中有 viewRresolver 这个类. 则创建 一个 bean  ContentNegotiatingViewResolver 

@ConditionalOnMissingBean(name = "viewResolver", value=ContentNegotiationgViewResolver.class):

    注解含义: 

     如果没有显示声明 名字是 viewResolver  和  类型是 ContentNegotiatingViewResolver,则创建这个bean

     总结, 所有自动装配的逻辑在 spring boot application 应用开始时执行的. 如果一个指定的类在 classpath中有效,  这些自动装配的类被执行. 自动装配的类查看这些已经配置的哪些bean. 基于这些beans ,它们能创造默认的bean.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容