乐趣区

关于springboot:第四阶段-day922-Spring-Boot

京淘我的项目概述


SpringBoot 启动原理阐明

4.1 需要阐明

    1.SpringBoot 启动是如何流转的.
    2. 什么叫做开箱即用,springBoot 中如何实现开箱即用的.    

4.2 “ 开箱即用 ” 阐明

    如果须要引入第三方的 "工具 / 性能", 只须要通过大量的配置 / 或者不做任何配置. 则就能够应用该性能 

4.3 对于启动项的阐明


    <!-- 间接的依赖项 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <!--springBoot 启动项 外部的 jar 包文件曾经将配置筹备实现, 用户
        只须要导入 jar 包就能够获取其性能.
        starter-web  间接引入了 SpringMVC 框架
        传统 mvc 框架配置:
                1. 导入特定的 jar 包及版本.
                2. 编辑 web.xml 配置 dispatcherServler  拦挡门路
                3. 配置 mvc 的配置文件  包扫描  视图解析器....

        -->
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

4.3 SpringBoot 程序启动加载过程

@SpringBootApplication 注解是一个组合注解,其中包含:@SpringBootConfiguration、@EnableAutoCOnfiguration、@ComponentScan
@SpringBootConfiguration 继承自 @Configuration,二者性能统一,标注以后类是配置类,并会将以后类内声名的以 @Bean 注解标注的办法实例纳入 Spring 容器中,实例名就是办法名。@ComponentScan 的作用是主动扫描并加载符合条件的的组件或 Bean 定义,最终将这些 Bean 加载到容器中。咱们能够通过 basePackages 属性指定扫描的范畴,如果不指定,默认扫描以后包及其子包上面的类。@EnableAutoConfiguration 是借助 @Import 将所有合乎主动配置条件的 Bean 加载到 IOC 容器。




4.3.1 元注解阐明:

@Target(ElementType.TYPE) 对哪个元素无效 对类无效
@Retention(RetentionPolicy.RUNTIME) 什么时候起作用 运行期无效
@Documented 是否反对生成文档
@Inherited 该注解是否能够被继承.

4.3.2 SpringBootConfiguration 阐明

 作用: 标识主启动类是一个大型的配置文件, 启动时会加载所有的小的配置文件.

@Configuration: 示意该类是一个配置类.
`@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {.....}` 

*   1
*   2
*   3
*   4
*   5

@EnableAutoConfiguration 阐明

 注解启用主动配置,其能够帮忙 SpringBoot 利用将所有符合条件的 @Configuration 配置都加载到以后 IoC 容器之中 

4.3.3 excludeFilters 阐明

 阐明: 在 springboot 容器启动时, 不须要加载某些过滤器. 因为 parent 标签中定义了所有的关联的 jar 包文件信息. 则启动时有可能导致意外的产生, 所有须要提前剔除.
 @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

4.3.4 @AutoConfigurationPackage

 阐明: 当程序启动时, 会依据主启动类的包门路, 扫描其子孙包, 所以 springboot 当前写代码时应该在其子孙包下编辑.

4.3.5 AutoConfigurationImportSelector

 阐明: 该配置中外部集成了所有的 SpringBoot 中的选择器. 这些选择器的次要的工作就是 ** 查看是否有本人选择器所治理的启动项的配置 **. 如果发现该启动项, 那么选择器就会执行该启动项, 从而实现了开箱即用的操作.
退出移动版