zoukankan      html  css  js  c++  java
  • Spring Boot 运行原理

    Spring Boot并没有任何新的技术,全都是基于Spring4提供的技术,用优秀的设计,为Web开发提供了一套新的方式。

    在HelloWorld中,我们没有进行任何显示的配置,但是程序还是运行起来了,那么Spring Boot是怎么做到的呢?那就得从启动类说起。

    想要查看原理,肯定得看源码,下面就稍微来小小的瞄几眼@SpringBootApplication这个注解

    ...
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan(excludeFilters = {
    @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
    @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
    public @interface SpringBootApplication
    {
    ......
    }


    @EnableAutoConfiguration会根据类路径中的jar依赖为项目进行自动配置,如:添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,Spring Boot会对Tomcat和Spring MVC进行自动配置

    @SpringBootApplication 扫描的是此类同级包及其下属包的Bean,建议放在groupId+arctifactId包下

    spring-boot-autoconfigure-1.5.1.RELEASE.jar中的META-INF,下的spring.factories# Auto Configure中,配置了自动扫描方案
    
    
    1. ConditionalOnBean                    容器中有指定Bean
    2. ConditionalOnClass                    类路径下有指定类
    3. ConditionalOnCloudPlatform
    4. ConditionalOnExpression                基于SpEL表达式作为判断条件
    5. ConditionalOnJava                    基于JVM版本作为判断条件
    6. ConditionalOnJndi                    在JNDI存在的条件下查总指定位置
    7. ConditionalOnMissingBean            容器中没有指定Bean的情况下
    8. ConditionalOnMissingClass            类路径下没有指定类
    9. ConditionalOnNotWebApplication        当前项目不是Web项目
    10. ConditionalOnProperty                指定属性是否存在
    11. ConditionalOnResource                类路径是否有指定值
    12. ConditionalOnSingleCandidate            指定Bean在容器中只有一个,或者虽然有多个但是指定首选的Bean
    13. ConditionalOnWebApplication            当前项目是Web项目
     
  • 相关阅读:
    EC600S连接阿里云
    纪念首次使用vscode+platformio完成点灯全过程
    使用EC600S-CN实现短信收发功能
    基于stm32,通过更换数据存储扇区提升w25q128flash芯片使用寿命
    0.96寸OLED模块-简述如何修改OLED_ShowChar()函数达到修改显示字体大小的目的
    stm32定时器初始化后自动进入一次中断问题
    个人PSP升级作业
    第一个微信小项目
    自己设计大学排名-数据库实践
    自己的第一个网页
  • 原文地址:https://www.cnblogs.com/sherrykid/p/6419395.html
Copyright © 2011-2022 走看看