springboot 底层点的知识
2021-01-22 13:17
标签:粘贴 bean 自动化 生效 EAP 获取 epo start 注解 springboot 底层点的知识 标签:粘贴 bean 自动化 生效 EAP 获取 epo start 注解 原文地址:https://www.cnblogs.com/chen--biao/p/12890440.html不断提高代码质量
从大的方面来讲,可以从这几个方面,不断提高自己的编程能力:
1、编码之前需要做一定的设计,主要考虑:耦合度,拓展性,复用度
2、熟悉类库,熟悉API,避免自己造轮子
3、阅读优秀源码并加以实践
4、参考一些已有的最佳实践,代码片段,但是避免复制粘贴
5、多考虑一些细节、边界、异常场景
6、保持代码的整洁,包括类、方法、变量的命名
7、在I/O操作多考虑性能问题,重要信息多考虑安全问题
springboot 重难点?
1、零配置
2、starter插件式解耦
参考:
https://blog.csdn.net/woshilijiuyi/article/details/82219585
what?
how?
why?
一、启动流程
1、入口:SpringApplication.run();
2、初始化回调接口:ApplicationContextInitializer
监听器接口:ApplicationListener
3、springboot扩展方式:SPI(Service Provider Interface)(参考:https://www.jianshu.com/p/0d196ad23915)
3.1、目录为:META-INF/spring.factories
3.2、配置方式:接口名称=实现类
3.3、根据“接口名称”获取对应的实现类,然后装载到内存中。
4、启动流程步骤
4.1、获取并启动监听器
4.2、构造容器环境
4.3、创建容器
4.4、实例化springBootExceptionReporter,springboot错我报告。
4.5、准备容器
4.6、刷新容器
4.7、刷新容器后的扩展接口
二、自动化配置流程(重点)
1、入口:@SpringBootApplication
2、自动装配:spring.factories 里面的:org.springframework.boot.autoconfigure.EnableAutoConfiguration
三、环境(Environment)
1、Environment是 spring 为运行环境提供的高度抽象接口,项目运行中的所有相关配置都基于此接口。springboot对此接口做了扩展。spring Cloud的配置文件,
在springboot解析逻辑之前,添加了bootstrap配置。
2、加载环境配置
3、触发环境监听器,加载项目在的配置文件。
3.1、判断是否指定了:profile
3.2、加载application.yml/application.properties
3.3、注意配置文件的位置,以及生效的优先级。
四、自定义AutoConfiguration|自定义starter
1、自定义starter
1.1、创建一个项目
1.2、配置类添加注解:
A:@Configuration,@ConditionalOnproperty
B:类名:CqcStarterAutoConfiguration
C:项目路径下添加文件:resources/META-INF/spring.factories
D:内容为:org.springframework.boot.autoconfigure.EnableAutoConfiguration=CqcStarterAutoConfiguration类的全限定名。
1.3、在需要的项目中,dependency 对应的maven坐标。
2、判定一个jar是否需要引入springboot的依据是:
1、@Conditional
2、@ConditionalOnProperty
五、监听器,自定义ApplicationListener
1、SimpleApplicationListener implements GenericApplicationListener,ApplicationListener
2、重写:onApplicationEvent 方法。
六、条件注解:@ConditionalOnBean
1、spring ioc 的过程中,优先解析:@Component,@Service,@Controller注解的类,再解析@Configuration的类。
2、@ConditionalOnClass
3、@AutoConfigureBefore,@AutoConfigureAfter,@AutoConfigureOrder 控制先后顺序。
缺:
后面章节