SpringBoot
月满轩尼诗三百
入学初识门庭,毕业非同学成。涉世或始今日,立身却在生平。
展开
-
SpringBoot如何暴露接口以供其他微服务使用
由于是在vdi中编码,因此不方便截图,后续重新总结1.在对应的service层编写提供别人使用的方法2.再指定的地方 提供对应的接口给别人使用(映射的url是在web层对应的url)@FeignClient(value = "ms-erp-mall-admin", configuration = {FeignApplyConfiguration.class})value:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现configu.原创 2020-10-14 15:29:06 · 4312 阅读 · 0 评论 -
SpringBoot的嵌入式Servlet容器自动配置原理1
目录前言一、如何定制和修改Servlet容器的相关配置二、注册Servlet三大组件【Servlet、Filter、Listener】1、先来看ServletRegistrationBean2、接下来是FilterRegistrationBean3、最后一个是ServletListenerRegistrationBean三、举例四、知识扩充前言我们知道SpringBoot默认使用Tomcat作为嵌入式的Servlet容器我们可以从pom文件中右键查看依赖.原创 2020-10-05 16:49:19 · 173 阅读 · 0 评论 -
SpringBoot——自定义starters(启动器)
前言我们知道,在Spring Boot项目开发过程中,如果要引入某个模块功能,都是通过在pom文件添加依赖,从而引入我们所需的功能。其实,我们所添加的依赖实质上便是一个个的starter。那么,有时我们可能不需要已有的starter,而是想引入我们自己写的某些依赖,这该如何实现呢?因此引入我们本部分的话题:自定义starter。自定义starter时,我们面临两个问题:1、这个场景需要使用到的依赖是什么?2、如何编写自动配置?1、回顾在动手之前,我们先东施效颦,看看SpringB原创 2020-10-05 16:11:09 · 528 阅读 · 0 评论 -
SpringBoot——事件监听机制的初步探索
1、事件监听机制我们先看看ApplicationContextInitializer长什么样子我们ctrl+H,可以查看springboot已经帮我们实现的类:接下来那我们就来实现一下这个接口吧!这里有个泛型,用以监听。其实我们在ApplicationContextInitializer中也看到了这个以下是完整的实现代码。先实现SpringApplicationRunListener,里面的方法,我们都做一些简单的输出。再实现ApplicationContextI原创 2020-10-05 11:43:05 · 105 阅读 · 0 评论 -
以debug形式了解SpringBoot启动自动配置的原理
在debug时,由于我们是对源码进行分析,因此时常会忘记自己走到哪一步(千万不要自信于自己的记性),尤其有时候我们对源码debug深度很深,再返回时一脸懵逼,因此我们最好用思维导图整理一下。后续我也会整理整合至本片文章中。目录1、创建SpringApplication对象2、运行run方法3、总结4、关于后续1、创建SpringApplication对象我们对主程序类先进行debug,来看看整个流程,之后step intostep intostep into:.原创 2020-10-05 10:44:32 · 990 阅读 · 1 评论 -
SpringBoot的嵌入式Servlet容器自动配置原理2
我们先在依赖中找到类作为例子找到web模块下的EmbeddedWebServerFactoryCustomizerAutoConfiguration类:(旧版源码是EmbeddedServletContainerAutoConfiguration类 )这个类也和旧版源码有挺大不同了,2.x中把自定嵌入式容器工厂的校验去掉了。新的源代码已经改了,核心是如下几个。其实质就似乎在判断是哪种容器就创建一个什么容器。接下来我们应该找的是:Tomcat...原创 2020-10-05 00:34:35 · 229 阅读 · 0 评论 -
从源码层次了解SpringBoot中SpringMVC的自动配置原理
SpringBoot中有大量的自动配置,而SpringMVC自动配置属于关键的部分https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#boot-features-developing-web-applications查看官方文档可看出Spring Boot 自动配置好了SpringMVC,而以上罗列的内容是SpringBoot对SpringMVC的默认配置。接下来,详细介绍每一条的内.原创 2020-10-05 00:13:26 · 278 阅读 · 0 评论 -
SpringBoot——webjars&静态资源映射规则
我们回忆一下SpringBoot的Web开发过程1)、创建SpringBoot应用,选中我们需要的模块;2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来;3)、自己编写业务代码;而在自动配置原理中,我们思考:这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?在此之前,我们大致有过如下的这些了解:xxxxAutoConfiguration:帮我们给容器中自动配置组件;xxxxProperties:原创 2020-10-04 23:43:38 · 484 阅读 · 0 评论 -
SpringBoot引入模板引擎—— Thymeleaf
因为SpringBoot使用的是jar包以及嵌入式的tomcat,因此并不支持jsp,因此我们需要模板引擎目前的模板引擎有Velocity、Freemarker、Thymeleaf。而SpringBoot推荐的Thymeleaf:语法更简单,功能更强大。1、引入thymeleaf在auto中查看只要我们把HTML页面放在classpath:/templates/,thymeleaf就能自动渲染;2、实践编写一个业务请求:在新建的html文件里简单命名一些内容.原创 2020-10-04 23:23:09 · 944 阅读 · 0 评论 -
slf4j日志的使用原理
slf4j日志的使用原理1、如何在系统中使用SLF4j在开发期间,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;因此,在使用SLF4j时,给系统里面导入slf4j的jar和logback的实现jar。我们可以进入SLF4j的官网看一看:另外,我们还能看到日志框架图:每一个日志的实现框架都有自己的配置文件。使用slf4j以后,配置文件还是做成日志实现框架自己本身的配置文件;2、遗留问题日志种类繁多且比较混乱,因此很有必要统一日志记..原创 2020-10-04 22:54:55 · 362 阅读 · 0 评论 -
SpringBoot——外部配置文件的加载顺序
SpringBoot也可以从以下位置加载配置。优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置(红色部分是重点)1.命令行参数所有的配置都可以在命令行上进行指定。例如输入如下命令:java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087通过命令行声明端口号为8087,则项目运行的端口号也变为了8087--server.context-path=/abc多个配置用空格.原创 2020-10-04 22:13:55 · 97 阅读 · 0 评论 -
SpringBoot——配置文件加载位置(即放在哪里)
在SpringBoot项目中,配置文件的加载位置是约定好的,因此需要牢记这些加载位置SpringBoot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件–file:./config/–file:./–classpath:/config/–classpath:/以上优先级是由高到底,高优先级的配置会覆盖低优先级的配置;1、例如我们在项目根目录下创建config文件夹,并放入配置文件f.原创 2020-10-04 20:27:33 · 5123 阅读 · 0 评论 -
从源码级别了解SpringBoot自动配置原理
前言我们知道SpringBoot帮我们完成了底层大量的配置工作,那么这种自动配置原理究竟是如何实现的呢?摸索1、主配置类SpringBoot启动的时候加载主配置类,开启了自动配置功能。需要额外注意的就是@EnableAutoConfiguration注解2、@EnableAutoConfiguration 作用利用EnableAutoConfigurationImportSelector给容器中导入一些组件。点击进入查看:在这个类中我们可以查看selectIm原创 2020-10-04 20:17:17 · 98 阅读 · 0 评论 -
SpringBoot中Profile的多环境支持
1、多Profile文件我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml;而且默认使用application.properties的配置;例如我们创建application-dev.properties,在其中命名端口号为8083运行后,发现端口号是application.properties的:这说明,多个配置文件存在时,则存在一定的优先级。如果我们激活dev环境:则会发现端口号变为dev下的8083:原创 2020-10-04 19:33:04 · 189 阅读 · 0 评论 -
SpringBoot项目配置文件占位符
我们在书写配置文件时,可以巧用各类占位符来编写配置属性尝试我们可以试着在配置文件中加入某些系统自带的内容:运行结果:我们可以看到这里生成了一连串字符。我们还可以在age后加入${random.int}运行后:当然,我们也可以设置一些默认值:运行结果:总结所以,配置文件占位符可以为:1、随机数${random.value}、${random.int}、${random.long}${random.int(10)}、${ra...原创 2020-10-04 18:05:36 · 385 阅读 · 0 评论 -
SpringBoot配置文件——yml讲解
SpringBoot遵循约定大雨配置,因此,其配置文件也是需要学习的一个重要内容1、配置文件SpringBoot 使用一个全局的配置文件,配置文件名是固定的:Application.properties、Application.yml2、作用配置文件的作用:修改springboot自动配置的默认值;springboot在底层都为我们自动配置好了。3、具体内容3.1 YMLYAML Aint Markup Language:YAML不是一种标记语言。通常以.yml为后缀的文件.原创 2020-10-04 18:00:16 · 5814 阅读 · 0 评论 -
如何优雅地写出HelloWorld(SpringBoot版)
虽然标题是写HelloWorld,但既然是学习SpringBoot,那就写个Hello SpringBoot吧!第一步永远都是创建项目,SpringBoot也不例外一、实现一个简单的HelloWorld1、新建一个SpringBoot项目点击下一步,进入项目创建界面(需要连网哦!)完成点击next,进入依赖添加界面,由于我们做web相关开发,于是选择web依赖最后再检查一下项目名称没有问题,则点击finish。点击后,一个springboot项目便创建好了。.原创 2020-08-24 18:48:08 · 201 阅读 · 0 评论 -
探索SpringBoot的基础注解
@SpringBootApplicationspringboot应用当中,此注解如果标注在某个类上,则说明这个类是spring boot的主配置类,spring boot就应该运行这个类的main方法来启动spring boot应用。需要注意的是,@SpringBootApplication其实是组合注解。现在重点介绍一下其中的两个注解:@SpringBootConfiguration和 @EnableAutoConfiguration@SpringBootConfi...原创 2020-08-23 02:17:30 · 143 阅读 · 0 评论