京淘我的项目概述
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@Configurationpublic @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中的选择器.这些选择器的次要的工作就是**查看是否有本人选择器所治理的启动项的配置**. 如果发现该启动项,那么选择器就会执行该启动项,从而实现了开箱即用的操作.