共计 1809 个字符,预计需要花费 5 分钟才能阅读完成。
京淘我的项目概述
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 中的选择器. 这些选择器的次要的工作就是 ** 查看是否有本人选择器所治理的启动项的配置 **. 如果发现该启动项, 那么选择器就会执行该启动项, 从而实现了开箱即用的操作.
正文完
发表至: springboot
2020-09-22