![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Boot
文章平均质量分 62
安迪源文
小步快走
展开
-
基于Tomcat 的Spring MVC 应用中响应数据压缩原理分析
在一个基于Tomcat的Spring MVC应用中,当我们配置了参数server.compression.enabled=true时,我们会发现,服务端返回给浏览器的js格式的文件被压缩了。这背后的原理是什么呢?我们做个简单的分析。本文所分析的例子项目如下 :Spring Boot 2.1.9.RELEASESpring MVCServlet容器使用缺省的Tomcat文章目录1. W...原创 2019-10-22 17:54:19 · 1262 阅读 · 1 评论 -
Springboot 应用常见的BeanFactoryPostProcessor清单
名称来源/引入位置功能介绍CachingMetadataReaderFactoryPostProcessor来源 : SharedMetadataReaderFactoryContextInitializer    #initialize引入位置:SpringApplication#pr原创 2019-01-19 15:17:03 · 2312 阅读 · 0 评论 -
Springboot应用中配置属性类和配置属性项的对应关系总结
Spring boot应用工作时使用到的配置属性来源自某个配置属性bean,而这些配置属性bean基于相应的配置属性类和相应的一组配置属性项创建。下表总结了Spring boot应用中框架内置的用于创建配置属性bean的配置属性类和配置属性项的对应关系 :注意 : 1. 这里的配置属性项指的的是外部配置文件中的配置项。这些外部配置文件通常是指application.properties/app...原创 2019-01-11 17:49:06 · 1107 阅读 · 0 评论 -
Springboot 应用常见的BeanPostProcessor清单
本文基于一个Springboot + JPA + Web MVC 项目列出了其中用到的所有BeanPostProcessor并给出要点功能介绍以备开发人员参考。具体所使用的配置如下 :Springboot 2.1.1Spring Data JPA 2.1.3 RELEASESpring Web 5.1.3 RELEASESpring Web MVC 5.1.3 RELEASE...原创 2019-01-08 22:57:39 · 3067 阅读 · 2 评论 -
Spring Boot 自动配置 : HibernateJpaAutoConfiguration
概述HibernateJpaAutoConfiguration 是Spring Boot针对使用JPA + Hibernate的自动配置类,它的主要目的是在特定条件被满足的情况下导入配置类HibernateJpaConfiguration。关于运行时使用的JPA + Hibernate组件的真正的配置工作,被委托给了HibernateJpaConfiguration来完成。HibernateJ...原创 2019-06-28 09:06:46 · 9136 阅读 · 0 评论 -
Spring Boot Servlet : ServletContextInitializer
概述功能介绍Spring Boot提供的在Servlet 3.0+环境中用于程序化配置ServletContext的接口。该接口ServletContextInitializer主要被RegistrationBean实现用于往ServletContext容器中注册Servlet,Filter或者EventListener。这些ServletContextInitializer的设计目的主要是用...原创 2019-05-22 09:58:25 · 5522 阅读 · 5 评论 -
Spring Boot Servlet : RegistrationBean
概述功能介绍Spring Boot提供的针对Servlet 3.0+容器的注册bean基类。该类的目的是用于向Servlet容器(Tomcat,Jetty等)注册工作组件,比如Servlet,Filter或者EventListener。这是一个抽象基类,实现了接口ServletContextInitializer。ServletContextInitializer约定了当前Registrat...原创 2019-05-22 08:45:22 · 5150 阅读 · 1 评论 -
Spring Boot Web Servlet : DelegatingFilterProxyRegistrationBean
DelegatingFilterProxyRegistrationBean是Spring Boot提供的针对Servlet 3.0+ Web的一个注册器Bean(RegistrationBean)。它的作用是向Servlet容器注册一个Servlet Filter,实现类为DelegatingFilterProxy。该Filter DelegatingFilterProxy虽然实现了Filter接...原创 2019-05-21 09:02:57 · 2460 阅读 · 0 评论 -
Spring Boot Web Servlet : AbstractFilterRegistrationBean
Spring Boot提供的用于向Servlet容器注册Filter的类的抽象基类,实现了接口ServletContextInitializer。适用于Servlet 3.0 +。对于该抽象基类,Spring Boot提供了两个实现类:FilterRegistrationBean注册一个Filter对象到Servlet容器。DelegatingFilterProxyRegistrat...原创 2019-05-20 09:35:27 · 1281 阅读 · 0 评论 -
Springboot 自动配置 : SecurityFilterAutoConfiguration
Spring Boot的自动配置类。用于向Servlet容器 注册一个名称为securityFilterChainRegistration的bean, 实现类是DelegatingFilterProxyRegistrationBean。该 bean 的目的是注册另外一个 Servlet Filter bean 到 Servlet 容器,实现类为 DelegatingFilterProxy 。Del...原创 2019-05-20 08:57:45 · 1700 阅读 · 0 评论 -
Spring Boot 自动配置 : SecurityAutoConfiguration
SecurityAutoConfiguration是Spring Boot提供的安全自动配置类。它仅在类DefaultAuthenticationEventPublisher存在于classpath上时才进行配置。配置包含如下几个方面 :注册安全属性bean SecurityProperties,相应的配置属性来自外部配置项 spring.security,这些属性会被相应的安全配置机制采用...原创 2019-05-17 14:41:50 · 14610 阅读 · 1 评论 -
Spring Boot : EnableConfigurationPropertiesImportSelector
EnableConfigurationPropertiesImportSelector是Spring Boot提供的一个ImportSelector实现,其目的是绑定外部属性到使用了注解@ConfigurationProperties的属性配置bean上。但具体的属性绑定的动作并不是由该ImportSelector来完成的,而是由它所指定的两个ImportBeanDefinitionRegistr...原创 2019-05-17 09:55:53 · 1359 阅读 · 0 评论 -
Spring Boot : @EnableConfigurationProperties -- 注册使用 @ConfigurationProperties 的 bean
@EnableConfigurationProperties是Spring Boot提供的一个注解,使用该注解用于启用应用对另外一个注解@ConfigurationProperties的支持。使用注解@ConfigurationProperties的bean可以通过标准方式注册到容器,比如使用注解@Bean;也可以使用该注解注册到容器,如下用法所示 :@EnableConfigurationPr...原创 2019-05-17 09:17:43 · 917 阅读 · 0 评论 -
Springboot + WebJars + AdminLTE 2 : HelloWorld 项目
本文给出一个使用 Springboot + WebJars + AdminLTE 2组合进行开发的HelloWorld Web项目。该组合有如下好处 :目标web应用可以以jar包方式独立部署和运行;使用WebJars方式管理三方JavaScript包,避免琐碎易错的手工管理;前后端开发在同一个Java开发项目内完成;使用AdminLTE 2,方便快速开始一个管理端项目;现在,我们分...原创 2019-04-20 11:18:34 · 3052 阅读 · 1 评论 -
Springboot + WebJars + React : HelloWorld 项目
作为Java程序员,某些情况下,我们需要React和ES6严谨并且快速地表达一些原型思想。这种情况下,全套的类似npm+webpack这种工具栈略显厚重,完全使用原生Javascript或者jQuery表达逻辑又显得过于底层和零碎。这个时候,我们可以考虑使用Springboot + WebJars + React。有如下好处 :目标web应用可以以jar包方式独立部署和运行;使用WebJar...原创 2019-04-19 09:25:43 · 1062 阅读 · 3 评论 -
Springboot + WebJars 方式开发前端WEB应用入门
1. 读一篇不错的入门文章如果你想使用Springboot+WebJars 方式开发前端WEB应用,可以先看一下这篇文章入门 :Introduction to WebJars背景资料:Utilizing WebJars in Spring Boot2. 从WebJars官网开始熟悉然后熟悉一下WebJars的官网:官网首页介绍了webjars的4种主要分类来源列出了常用的Web...原创 2019-04-18 21:26:47 · 320 阅读 · 0 评论 -
Spring boot Web MVC : 缺省错误视图解析器 DefaultErrorViewResolver
DefaultErrorViewResolver是Springboot缺省实现的一个错误视图解析器ErrorViewResolver。它基于一些常见的约定,尝试根据HTTP错误状态吗解析出错误处理视图。它会在目录/error下针对提供的HTTP错误状态码搜索模板或者静态资源,比如,给定了HTTP状态码404,它会尝试搜索如下模板或者静态资源:/<templates>/error/4...原创 2019-04-08 09:23:12 · 1999 阅读 · 1 评论 -
Springboot Spring MVC应用静态资源访问配置详解
在基于Springboot的Spring MVC 应用中,静态资源访问配置有以下几种方案 :使用缺省位置存取静态资源:classpath静态资源路径配置特定路径的资源存取位置:classpath静态资源路径或者文件系统静态资源文件路径本文基于Springboot + Tomcat + Spring MVC应用来看看以上几种方案如何实施 :1. 使用缺省位置存取静态资源缺省情况下,Sp...原创 2019-04-07 11:57:08 · 1529 阅读 · 0 评论 -
Spring boot Web MVC : 缺省错误属性处理工具 DefaultErrorAttributes
DefaultErrorAttributes是Spring boot缺省提供的从Web Servlet请求中获取错误属性的工具。这里所指的Web Servlet请求应该是一个对错误处理页面的请求。当一个用户请求处理过程中出现错误时,Servlet容器会构造并触发(forward)一个对错误处理页面的请求,并将如下信息作为对错误处理页面请求的属性 :javax.servlet.error.re...原创 2019-04-05 23:03:19 · 3201 阅读 · 0 评论 -
Spring boot Web MVC : 缺省全局错误控制器 BasicErrorController
BasicErrorController是Spring boot提供的缺省全局错误控制器Controller。该控制器提供了两个控制器方法,这两个方法逻辑类似,都是处理请求上的错误属性,使用缺省的错误解析机制处理错误属性返回结果给客户端,但分别对应返回HTML格式和JSON格式。这里缺省的错误处理机制是指 :如果使用DefaultErrorViewResolver可以找到匹配特定HTTP错误...原创 2019-04-04 22:08:15 · 3791 阅读 · 1 评论 -
注解 @EnableFeignClients 工作原理
概述在Spring cloud应用中,当我们要使用feign客户端时,一般要做以下三件事情 :使用注解@EnableFeignClients启用feign客户端;示例 :@SpringBootApplication@EnableFeignClientspublic class TestApplication { public static void main(String[...原创 2019-01-28 17:38:37 · 134511 阅读 · 13 评论 -
Springboot 应用常见的BeanDefinitionRegistryPostProcessor清单
名称来源/引入位置功能介绍CachingMetadataReaderFactoryPostProcessorConfigurationWarningsApplicationContextInitializer#ConfigurationWarningsPostProcessorConfigurationWarningsPostProcessorSharedMeta...原创 2019-01-18 18:31:42 · 617 阅读 · 0 评论 -
Spring BeanPostProcessor : ErrorPageRegistrarBeanPostProcessor
概述该BeanPostProcessor检测bean ErrorPageRegistry的创建,检测到时,在它初始化前,获取容器中所有的ErrorPageRegistrar bean,将它们注册到bean ErrorPageRegistry。这是一个针对Springboot Servlet Web应用的BeanPostProcessor,仅在Springboot Servlet Web应用中被应...原创 2019-01-12 19:45:27 · 688 阅读 · 1 评论 -
Spring BeanPostProcessor : DataSourceInitializerPostProcessor
概述DataSourceInitializerPostProcessor是Springboot提供的一个用于初始化数据源的BeanPostProcessor。它存在的目的是检测数据源DataSource bean实例的初始化,一旦检测到,它会尝试获取一个实现类为DataSourceInitializerInvoker的bean。而bean DataSourceInitializerInvoker...原创 2019-01-12 17:16:36 · 1764 阅读 · 0 评论 -
Spring BeanPostProcessor : WebApplicationContextServletContextAwareProcessor
概述WebApplicationContextServletContextAwareProcessor被用于向bean注入ConfigurableWebApplicationContext应用上下文,它仅仅用在当前应用是一个Springboot + Spring MVC(也就是Servlet)Web应用的情况下。如果当前应用是一个非Spring boot Servlet Web应用,而是一个非S...原创 2019-01-11 10:34:26 · 1133 阅读 · 0 评论 -
Spring Servlet Web 5.1.3 常用过滤器 : RequestContextFilter
概述该过滤器将当前请求暴露到当前线程,具体是通过org.springframework.context.i18n.LocaleContextHolder和RequestContextHolder。这样当前请求随后的处理过程中,就可以在当前线程中获取的当前请求的信息,而无需把请求对象作为参数到处传递 。这里注意一个概念,缺省情况下,Servlet容器对一个请求的整个处理过程,是由同一个线程完成...原创 2019-01-08 16:58:11 · 5413 阅读 · 0 评论 -
Spring何时为使用事务注解的bean创建代理 ?
本文基于Springboot 2.1.0 JPA 应用分析总结。应用启动过程中Spring AOP自动配置机制AopAutoConfiguration执行仅在类 EnableAspectJAutoProxy 存在于classpath并且 spring.aop 没有明确设置为 false 时应用可以认为等价于主动使用注解 @EnableAspectJAutoProxy注解@Ena...原创 2019-01-06 20:59:37 · 2399 阅读 · 4 评论 -
Spring boot Servlet Web 应用常用的过滤器
本文对基于Springboot Web应用常用的Filter做了一个总结。具体使用的 Spring boot版本为 2.1.1,Servlet容器缺省为Tomcat 9.0.13嵌入式版本。名称类简介characterEncodingFilterorg.springframework.boot.web.servlet.filter.OrderedCharacterE...原创 2019-01-01 19:09:46 · 810 阅读 · 0 评论 -
Spring Security Web 5.1.2 源码解析 -- WebAsyncManagerIntegrationFilter
概述此过滤器用于集成SecurityContext到Spring异步执行机制中的WebAsyncManager。源代码解析package org.springframework.security.web.context.request.async;import java.io.IOException;import java.util.concurrent.Callable;impo...原创 2018-12-16 21:34:16 · 2307 阅读 · 0 评论 -
Springboot Web应用请求处理流程概述 1 -- Tomat 准备ApplicationFilterChain
本流程分析基于 :springboot 2.1.1Tomcat 9.0.13缺省配置请求处理 : socket =&gt; coyote.RequestAbstractProtocal$ConnectionHandler#process(SocketWrapperBase&lt;S&gt; wrapper, SocketEvent status)创建一个Processor Ht...原创 2018-12-16 18:09:58 · 3547 阅读 · 1 评论 -
Springboot Web应用Tomcat启动流程概述
本流程分析基于 :springboot 2.1.1Tomcat 9.0.13缺省配置应用启动过程中Tomcat的启动SpringApplication#run()SpringApplication#refreshContext(context)这里 context 是 AnnotationConfigServletWebServerApplicationContextS...原创 2018-12-15 22:32:58 · 1940 阅读 · 3 评论 -
Spring Security Web 5.1.2 源码解析 -- 安全相关Filter清单
名称简介WebAsyncManagerIntegrationFilterTODOSecurityContextPersistenceFilter为整个请求处理过程所需的安全上下文的准备和清理HeaderWriterFilterTODOCsrfFilterTODOLogoutFilter检查是否用户请求了退出当前登录UsernamePass...原创 2018-12-02 20:03:51 · 3170 阅读 · 1 评论 -
Springboot内置ApplicationContextInitializer--ConditionEvaluationReportLoggingListener
源码分析本文代码基于 Springboot 2.1.0package org.springframework.boot.autoconfigure.logging;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework...原创 2018-11-23 09:28:50 · 7755 阅读 · 2 评论 -
Springboot内置ApplicationContextInitializer--ServerPortInfoApplicationContextInitializer
package org.springframework.boot.web.context;import java.util.HashMap;import java.util.Map;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.web.server.We...原创 2018-11-22 11:23:29 · 950 阅读 · 0 评论 -
Springboot内置ApplicationContextInitializer--ConfigurationWarningsApplicationContextInitializer
此ApplicationContextInitializer用于检查扫描包的问题,然后对这些一般性配置错误在日志上输出警告,通过这些日志你可以知道哪些包存在问题并作出相应的调整。该ApplicationContextInitializer的执行仅仅是执行检查和日志输出检查结果,并不会改变启动逻辑,也不会对应用状态做出改动,所以也不会影响应用的正常运行。package org.springfram...原创 2018-11-22 10:40:44 · 2397 阅读 · 0 评论 -
Springboot内置ApplicationContextInitializer--ContextIdApplicationContextInitializer
package org.springframework.boot.context;import java.util.concurrent.atomic.AtomicLong;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextI...原创 2018-11-22 09:52:23 · 886 阅读 · 0 评论 -
Springboot内置ApplicationContextInitializer--DelegatingApplicationContextInitializer
执行环境属性&amp;quot;context.initializer.classes&amp;quot;指定的初始化器,这里其实是给springboot应用程序使用者提供了一个机会指定自己实现的ApplicationContextInitializer对应用程序做一些初始化工作。package org.springframework.boot.context.config;import java.util.ArrayList...原创 2018-11-21 18:38:29 · 1097 阅读 · 0 评论 -
Spring命令行参数封装CommandLineArgs
概述Spring对应用程序运行的命令行参数进行了抽象,这个抽象是类CommandLineArgs。CommandLineArgs类将命令行参数分为两类:option 参数以 --开头可以认为是name/value对参数例子 : --foo, --foo=bar非 option 参数不以 --开头可以认为是只提供了value的参数(具体怎么理解这个值,看业务逻辑的需求)...原创 2018-11-21 18:07:27 · 3673 阅读 · 0 评论 -
Springboot内置ApplicationListener--ConfigFileApplicationListener
源码分析本文源代码基于 Springboot 2.1.0package org.springframework.boot.context.config;import java.io.IOException;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import ...原创 2018-11-17 22:56:14 · 3873 阅读 · 0 评论 -
Springboot内置ApplicationListener--LoggingApplicationListener
源码分析本文源代码基于 Springboot 2.1.0package org.springframework.boot.context.logging;import java.util.Collections;import java.util.LinkedHashMap;import java.util.List;import java.util.Locale;import ...原创 2018-11-17 20:47:17 · 3756 阅读 · 0 评论