首页天道酬勤spring boot 源码调试,sentinel源码分析

spring boot 源码调试,sentinel源码分析

张世龙 05-06 08:56 40次浏览

SpringBoot源代码深度分析第二章SpringBoot基础文章目录SpringBoot源代码深度分析序言一、SpringBoot主要特性(一) SpringBoot Starter (二)简化编码)三)自动配置

前言: Spring Boot是Pivotal团队提供的新框架,旨在简化新spring APP应用程序的初始构建和开发过程。 此框架是以特定方式配置的,以避免开发人员需要定义模板化配置。 本章主要介绍springBoot的基本功能和热配置的相关内容

另一方面,springBoot的主要特性 SpringBoot Starter :他集成了常用的依赖组,并将其集成为一个依赖,以便一次添加到项目的Maven或Gradle构建中;

简化了编码,SpringBoot采用JavaConfig方式配置Spring,提供大量评论,大大提高了工作效率。

自动配置: SpringBoot的自动配置特性是利用Spring有条件配置的支持,合理推测APP应用所需的bean,并自动配置他们;

使导入变得简单。 SpringBoot内置了三种servlet容器: Tomcat、Jetty和undertow。 可以在一个Java运行环境中运行SpringBoot项目。 SpringBoot的项目将成为jar包。

(一) springbootstarterspringbootstarter也称为起步依赖,将某些功能的坐标放在一起以提供若干默认功能。

)二)简化编码的Spring,由于其繁杂的结构,一度被认为是“构成地狱”。 各种XML、Annotation配置令人眼花缭乱,而且即使弄错了也很难确定原因。

Spring Boot多采用Java Config方式构成Spring。

(三)自动配置spring Boot在启动时自动创建几个配置类的bean,并将其添加到IOC容器中;

(四)简化部署一键启动,解压缩jar,运行jar; 无需预先部署到APP应用服务器为了降低对执行环境的基本要求,环境变量中可以有JDK;

二、springBoot在开发项目过程中,修改了一些代码后,如果需要本地验证,则需要重新启动本地服务进行验证,然后启动这个项目。 如果项目庞大,还是需要时间。 spring开发团队给我们带来了插件,很好地解决了spring-boot-devtools,本地验证缓慢的问题。

! -依赖热部署----dependencygroupidorg.spring framework.boot/groupidartifactidspring-boot-dev tools/artifact id /

选择IDEA工具界面的【File】-【Settings】选项,打开【Compiler】面板设置页面

选择Build下的Compiler选项,在右侧选中" Build project automatically "选项,将项目设置为自动编译,然后单击【Apply】【OK】按钮保存设置

在中找到compiler.automake.allow.when.app.running,选中此选项后的Value值,以指定IDEA工具将在程序运行时自动编译

三、热部署原理分析这个原理很好。 也就是说,我们在编辑器中启动项目,修改相关代码,在编辑器自动启动并编译以替换历史. class文件后,在项目检测到文件更改后,srpring-boot项目

可以看到官方网站触发器的说明:

正如您所看到的,在部署插件时,插件会监视classpath资源的变化,并在classpath发生变化时触发重新启动

在此,对插件重新启动较快的理由进行了说明。 这里使用了两种加载器来加载类。 使用base-classloader加载到第三方jar包中,使用restartClassLoader加载到开发人员自己开发的代码中。 这比停止重新启动服务快得多。 因为使用插件只是重新启动开发人员编写的部分代码。

四.热配置排除资源部分资源变更后无需触发重启。 例如,可以就地编辑Thymeleaf模板。 默认情况下,资源/META-INF/maven、/META-INF/

resources , /resources , /static , /public , 或 /templates 不触发重新启动,但确会触发现场重装。如果要自定义这些排除项,则可以使用该spring.devtools.restart.exclude 属性。例如,仅排除 /static , /public 您将设置以下属性:

spring.devtools.restart.exclude=static/**,public/**

springBoot在进行自动配置的时候,就回去加载各个jar包下META-INF下的spring.properties文件,点击LocalDevToolsAutoConfiguration,点击DevToolsProperties

public static class Restart { private static final String DEFAULT_RESTART_EXCLUDES = "META-INF/maven/**,META-INF/resources/**,resources/**,static/**,public/**,templates/**,**/*Test.class,**/*Tests.class,git.properties,META-INF/build-info.properties"; private boolean enabled = true; private String exclude = "META-INF/maven/**,META-INF/resources/**,resources/**,static/**,public/**,templates/**,**/*Test.class,**/*Tests.class,git.properties,META-INF/build-info.properties"; private String additionalExclude; private Duration pollInterval = Duration.ofSeconds(1L); private Duration quietPeriod = Duration.ofMillis(400L); private String triggerFile; private List<File> additionalPaths = new ArrayList(); private boolean logConditionEvaluationDelta = true;...}
idea如何配置maven环境,idea自带maven配置