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项目
     
  • 相关阅读:
    C语言:链表实现的一个实例
    第二次作业——C++学习
    第二次作业———“A+B Format”思路与总结
    hdu 2962 Trucking (二分+最短路Spfa)
    hdu 2680 Choose the best route (dijkstra算法 最短路问题)
    hdu 1233 还是畅通工程 (最小生成树)
    poj 2253 Frogger (dijkstra最短路)
    poj 1062 昂贵的聘礼 (dijkstra最短路)
    hdu 2066 一个人的旅行
    poj 2387 Til the Cows Come Home(dijkstra算法)
  • 原文地址:https://www.cnblogs.com/sherrykid/p/6419395.html
Copyright © 2011-2022 走看看