Spring Boot
文章平均质量分 82
xuguofeng2016
这个作者很懒,什么都没留下…
展开
-
spring启动流程 (6完结) springmvc启动流程
SpringMVC的启动入口在SpringServletContainerInitializer类,它是ServletContainerInitializer实现类(Servlet3.0新特性)。SpringMVC将大部分启动逻辑封装在了抽象WebApplicationInitializer中。本文将详细分析ServletContainerInitializer、SpringServletContainerInitializer和WebApplicationInitializer的工作流程。原创 2023-07-26 09:39:42 · 2274 阅读 · 0 评论 -
spring启动流程 (5) Autowired原理
本文将介绍三者Autowire:1. 构造方法参数Autowire、2. 字段和setter方法参数Autowire、3. @Bean方法参数Autowire原创 2023-07-17 12:10:54 · 277 阅读 · 0 评论 -
spring启动流程 (4) FactoryBean详解
实现类对象将被用作创建Bean实例的工厂,即调用getObject()方法返回的对象才是真正要使用的Bean实例,而不是直接将FactoryBean对象作为暴露的Bean实例,本文将简单介绍其实现方式。原创 2023-07-11 09:14:11 · 175 阅读 · 0 评论 -
spring启动流程 (3) BeanDefinition详解
BeanDefinition在Spring初始化阶段保存Bean的元数据信息,包括Class名称、Scope、构造方法参数、属性值等信息,本文将介绍一下BeanDefinition接口、重要的实现类,以及在Spring中的使用示例。原创 2023-07-04 08:17:23 · 815 阅读 · 0 评论 -
spring启动流程 (2) Bean实例化流程
Spring Bean实例化入口在AbstractApplicationContext类的finishBeanFactoryInitialization方法,本文将重点分析Bean实例化流程。原创 2023-07-02 14:55:36 · 181 阅读 · 0 评论 -
spring启动流程 (1) 流程概览
阅读AnnotationConfigApplicationContext源码,分析Spring启动流程。原创 2023-06-26 16:43:34 · 581 阅读 · 0 评论 -
springboot启动流程 (3) 自动装配
在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能。本文将详细分析该注解的工作流程。原创 2023-06-21 12:11:27 · 767 阅读 · 0 评论 -
springboot启动流程 (2) 组件扫描
SpringBoot的组件扫描是基于Spring @ComponentScan注解实现的,该注解使用basePackages和basePackageClasses配置扫描的包,如果未配置这两个参数,Spring将扫描该配置类所属包下面的组件原创 2023-06-19 08:54:13 · 1230 阅读 · 0 评论 -
springboot启动流程 (1) 流程概览
本文将通过阅读源码方式分析SpringBoot应用的启动流程,不涉及Spring启动部分(有相应的文章介绍)。本文不会对各个流程做展开分析,后续会有文章介绍详细流程。原创 2023-06-15 09:00:39 · 795 阅读 · 0 评论 -
spring-transaction源码分析(5)TransactionInterceptor事务拦截逻辑
spring-tx的事务拦截逻辑在TransactionInterceptor类,本文将详细分析其实现方式。原创 2023-05-25 08:20:29 · 1095 阅读 · 0 评论 -
spring-transaction源码分析(4)AspectJ和spring-aspects模块
AspectJ是Java语言实现的一个面向切面编程的扩展库,能够基于一定的语法编写Aspect代码,使用ajc编译器将其编译成.class文件,之后在Java程序编写或加载时将Aspect逻辑嵌入到指定的切面。原创 2023-05-16 12:00:10 · 617 阅读 · 0 评论 -
spring-transaction源码分析(3)Transactional事务失效原因
在Transactional方法中使用this方式调用另一个Transactional方法时,拦截器无法拦截到被调用方法,严重时会使事务失效。原创 2023-05-11 09:50:09 · 411 阅读 · 0 评论 -
spring-transaction源码分析(2)EnableTransactionManagement注解
EnableTransactionManagement注解开启spring的注解驱动事务管理功能,通常标注在@Configuration类上面用于开启命令式事务管理或响应式事务管理。本文将详细介绍该注解的属性。原创 2023-05-06 10:22:15 · 709 阅读 · 0 评论 -
spring-transaction源码分析(1)概述和事务传播级别
spring-tx包使用注解驱动和AOP通知将事务开启、提交/回滚、以及复杂的传播机制封装了起来,开发者不再需要编写事务管理的代码,而是可以只关注自己的业务逻辑。本文将简单介绍spring-tx使用步骤以及七种事务传播级别。原创 2023-04-28 12:18:24 · 922 阅读 · 0 评论 -
Spring @Import注解源码分析
Import注解指示导入一个或多个组件类,可以是@Configuration、ImportSelector、ImportBeanDefinitionRegistrar或者其他常规组件。本文将通过阅读源码,分析Import注解的工作流程。原创 2023-04-14 12:57:53 · 264 阅读 · 0 评论 -
Spring AOP源码分析(深入原理)创建通知、切面匹配与创建代理
在之前的三篇文章中已经梳理了spring aop的核心内容:1. AnnotationAwareAspectJAutoProxyCreator的注入;2. AnnotationAwareAspectJAutoProxyCreator获取Advisor集、bean匹配、创建代理等;3. 切面拦截器的执行流程;但是由于时间和个人水平限制,有几个内容记录的不是很详细,比如:- 事件通知何时创建;- cglib代理的原理;- Pointcut如何匹配;本文将继续阅读spring aop源码,并结原创 2023-03-27 13:48:01 · 397 阅读 · 0 评论 -
Spring OpenFeign源码分析(4) Hytrix和Sentinel
Feign与Hytrix、Sentinel集成最大的不同在于使用不同的InvocationHandlerFactory工厂:1) 默认使用feign.InvocationHandlerFactory.Default;2) Hytrix、Sentinel分别有各自的InvocationHandlerFactory实现类;本文重点分析Hytrix、Sentinel的InvocationHandlerFactory和InvocationHandler实现逻辑。原创 2023-03-21 16:31:39 · 295 阅读 · 0 评论 -
Spring OpenFeign源码分析(2) 接口代理执行流程
前文《OpenFeign源码01 接口扫描和创建代理》中分析了创建feign代理的流程,本文将从代理ReflectiveFeign.FeignInvocationHandler(实现了InvocationHandler接口)入手,分析feign client的执行流程:1. SynchronousMethodHandler类的invoke方法;2. 执行拦截器的逻辑并获取feign Request;3. LoadBalancer负载均衡逻辑;4. 发送请求;5. 响应解码原创 2023-03-13 11:16:33 · 435 阅读 · 0 评论 -
Spring OpenFeign源码分析(1) 接口扫描和创建代理
Feign是Spring Cloud做服务间调用的组件,基于@EnableFeignClients、@FeignClient、@RequestMapping等注解,能够将开发者编写的Client接口扫描到Spring容器,只要注入Client代理即可实现服务间调用。本系列文章通过阅读Feign的源码,深入分析其注册、执行流程。本文从EnableFeignClients注解入手,分析:1. 扫描Client接口,创建BeanDefinition的流程;2. 为Client接口创建代理的流程原创 2023-03-07 17:20:46 · 760 阅读 · 0 评论 -
SpringMVC DispatcherServlet源码(0) 目录
DispatcherServlet是Spring MVC的核心组件,他会被注册到Servlet Web容器(例如tomcat)中,接收/*请求,然后做请求分发,调用Controller方法处理请求,接收响应返回给客户端。原创 2023-03-01 16:47:10 · 252 阅读 · 0 评论 -
SpringMVC DispatcherServlet源码(6) 完结 静态资源原理
阅读SpringMVC源码,分析静态资源处理器相关组件:1. 使用SimpleUrlHandlerMapping管理url -> 处理器映射关系;2. spring mvc使用WebMvcConfigurationSupport注入SimpleUrlHandlerMapping组件;3. DelegatingWebMvcConfiguration可以使用WebMvcConfigurer的配置静态资源url pattern原创 2023-03-01 16:28:20 · 438 阅读 · 0 评论 -
SpringMVC DispatcherServlet源码(5) HttpMessageConverter扩展
通过一个对响应体进行加密、对请求体解密的示例,介绍一下自定义HttpMessageConverter的方式:1. 编写类实现HttpMessageConverter接口,read方法中先对请求体解密,之后在做json反序列化;2. write方法先做json序列化,之后再加密;3. 通过WebMvcConfigurer注册原创 2023-02-20 15:58:04 · 524 阅读 · 0 评论 -
SpringMVC DispatcherServlet源码(4) HandlerMapping和HandlerAdapter等组件说明
本文介绍一下与DispacherServlet相关的几个重要组件:HandlerMapping - 管理请求与处理器映射关系;HandlerAdapter - 请求处理器;HandlerMethodArgumentResolver - 处理器方法参数解析器;HandlerMethodReturnValueHandler - 处理器方法返回值处理器;HttpMessageConverter - 请求体、响应体读写转换器;ViewResolver - 视图解析器;HandlerExceptionResolver原创 2023-02-15 11:34:33 · 934 阅读 · 0 评论 -
SpringMVC DispatcherServlet源码(3) 请求分发流程
本文介绍DispatcherServlet的请求转发流程,包括:1. 从HandlerMapping集查找可以处理该请求的执行器链、2. 从HandlerAdapter集查找支持当前请求的Adapter、3. 执行拦截器preHandle方法、4. 处理请求接收ModelAndView返回值、5. 执行拦截器postHandle方法、6. 处理接口返回值、7. 执行拦截器afterCompletion方法原创 2023-02-05 10:30:33 · 482 阅读 · 0 评论 -
SpringMVC DispatcherServlet源码(2) 扫描Controller创建HandlerMapping流程
Spring MVC向容器注册一个RequestMappingInfoHandlerMapping组件,他会扫描容器中的Controller组件,创建RequestMappingInfo并注册HandlerMethod映射关系。本文将阅读Spring MVC源码分析上述流程。原创 2023-01-30 16:53:01 · 824 阅读 · 0 评论 -
SpringMVC DispatcherServlet源码(1) 注册DispatcherServlet流程
通过阅读源码,分析Spring MVC和Spring Boot注册DispatcherServlet的流程原创 2023-01-15 14:24:25 · 774 阅读 · 0 评论 -
Spring @Conditional注解源码分析
通过阅读@Conditional注解、Condition接口、ConditionEvaluator类以及@ConditionalOnProperty(Spring Boot提供)注解源码,深入分析Spring Conditional的实现原理。原创 2023-01-09 08:18:14 · 761 阅读 · 0 评论 -
Spring @ComponentScan注解源码分析
本文将通过阅读spring源码,分析@ComponentScan注解扫描组件的原理。和@Bean注解一样,@ComponentScan注解也是通过ConfigurationClassPostProcessor后置处理器完成扫描工作的。原创 2023-01-04 20:31:26 · 448 阅读 · 0 评论 -
Spring @Bean注解源码分析
本文将通过阅读spring源码,分析@Bean注解导入Bean的原理。从AnnotationConfigApplicationContext对象的创建讲起,因为在创建他的过程中,spring会先注入一系列的处理器,使用这些处理器解析@Configuration Class进而将@Bean标注的方法转为BeanDefinition注入到容器。其他的ApplicationContext实现在原理上也是一致的,只是入口不同而已。原创 2022-12-14 22:06:13 · 890 阅读 · 0 评论