zoukankan      html  css  js  c++  java
  • springboot 底层点的知识

    不断提高代码质量
        从大的方面来讲,可以从这几个方面,不断提高自己的编程能力:
    		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<ApplicationEvent>
    		2、重写:onApplicationEvent 方法。
    
    	六、条件注解:@ConditionalOnBean
    		1、spring ioc 的过程中,优先解析:@Component,@Service,@Controller注解的类,再解析@Configuration的类。
    		2、@ConditionalOnClass
    		3、@AutoConfigureBefore,@AutoConfigureAfter,@AutoConfigureOrder 控制先后顺序。
    	缺:
    		后面章节
    		
    	
    

      

  • 相关阅读:
    五、Django的模板渲染和继承
    四、Django的views
    三、Django的urls
    ubuntu超过4G如何备份成iso文件
    15张vim速查表
    这样配置你的IDEA工作效率提高好几倍!
    git用法
    数据库 | MySQL日志管理
    异常处理
    池 concurrent.futrues
  • 原文地址:https://www.cnblogs.com/chen--biao/p/12890440.html
Copyright © 2011-2022 走看看