
Spring
文章平均质量分 83
Spring框架的一下内容
一半@java
这个作者很懒,什么都没留下…
展开
-
死磕Spring系列:SpringAOP源码解析
在SpringAOP中,有很多专业术语,已经了解的小伙伴可以略过,不了解的朋友就需要注意看一下啦,不然会很懵的哟。Aspect(切面)跨多个类的关注点的模块化,与垂直调用的业务树不同,以横切的方式存在。Join point(连接点)程序执行过程的一个点,总是代表一个方法执行。Advice (通知)在特定连接点采取的行动,有Around、Before、After类型的Advice。Pointcut(切入点)匹配连接点的断言,Advice与切入点表达式相关联,并在切入点匹配的任何连接点处运行。切入点表达式匹配的原创 2022-06-17 11:12:26 · 880 阅读 · 1 评论 -
死磕Spring系列:BeanDefinition注册流程
在Spring项目中,为什么我们仅仅只需要在类上定义一个@Component之类的注解,就能让Spring去管理和使用这个类了呢?聪明的小伙伴肯定很快就想到了,肯定是在启动项目的时候,框架去判断类上面有没有特定的注解,然后通过反射去创建对象的。Spring就是以这样的思路来进行Bean管理的,但是Spring在其中考虑的更细致,比如这个bean在以后使用的时候是新创建,还是使用最开始创建的对象,还是在每个请求或者每个session作用域中使用同一个或者多个这个类的实例,又比如这个类是否依赖于其他类实例,在原创 2022-04-19 14:09:21 · 1308 阅读 · 0 评论 -
死磕Spring系列:Bean实例化原理
1. BeanDefinition大家都知道,在Spring IOC启动时,会扫描类的信息,将相关信息封装为BeanDefinition存入到beanDefinitionMap中,后续用其中的描述信息来生成bean。那我们现在就来对怎样Spring是怎样去实例化一个bean做一个说明。2. getBean首先从AbstractBeanFactory类入手,因为它是IOC容器的顶层实现类,基本上都是用其中的getBean去获取bean的。public Object getBean(String na原创 2022-04-14 16:53:33 · 772 阅读 · 0 评论 -
死磕Spring系列:MVC源码分析
为了方便利用使用的思维进行理解,我们可以先从程序调用入口出发,先对调用层面进行说明,再对程序框架本身处理进行深入。简而言之就是先说明一个请求进入mvc逻辑需要经过哪些处理步骤(1~7节),再说明处理步骤中mvc是怎样提供参数支持的(8~10节)。1. ServletServlet是一个处理http请求的标准类,它处于javax.servlet.http包,属于java标准库的扩展部分。其中主要有init、service、destroy方法,作用分别为初始化时调用,接收到请求调用,销毁时调用。Servl原创 2022-02-23 22:39:00 · 1148 阅读 · 0 评论 -
死磕Spring系列:@Autowired工作原理
1. 前言本文需要有对SpringBean加载流程的知识基础,如果需要在温习一遍的,可以先阅读博文《死磕Spring系列:从源码了解SpringBean生命周期》。2. @Autowired@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUN.原创 2022-02-18 10:53:58 · 1017 阅读 · 2 评论 -
死磕Spring系列:从源码理解SpringBean生命周期
Spring替我们管理了对象的创建、引用及销毁,极大的简化了开发者的操作,但是,这一系列便利操作背后究竟是怎样实现的呢?我们来一探究竟。1. 调用时序图2. 源码分析2.1 SpringApplication2.1.1 run运行启动类,调用SpringApplication类的run方法:public class DemoApplication { public static void main(String[] args) { SpringApplicat原创 2022-02-18 09:55:32 · 563 阅读 · 0 评论 -
死磕Spring系列:Spring事件(Event)传播源码剖析
1. 关于事件(Event)通知什么是事件event即事件。每一个动作,每一步操作,都可以称之为事件。事件通知机制的作用可以将相互耦合的代码解耦,保持功能的单一职责原则。举个栗子:注册用户时,需要给用户发送邮箱验证及短信通知。最粗暴的方法就是将邮箱逻辑和短信逻辑内嵌到注册方法中,进行方法调用,如果后续对邮箱和短信逻辑有另外的操作,需要去对原有注册方法进行显示处理。这样子实现功能和代码结构没什么太大的问题,也比较简单,但是不太利于扩展,对于某些需要扩展性和松耦合的场景不太友好。在这样的场原创 2021-11-11 17:18:01 · 1281 阅读 · 0 评论 -
死磕Spring系列:ConfigurationClassPostProcessor源码解析
1. 源码解析ConfigurationClassPostProcessor在SpringBoot启动流程中的刷新上下文中被执行,作为BeanDefinitionRegistry的后置处理器主要用来扫描加载类到Spring容器中。ConfigurationClassPostProcessor作为BeanDefinitionRegistry后置处理器调用的方法: public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry原创 2021-10-26 16:44:25 · 295 阅读 · 0 评论 -
死磕Spring系列:BeanFactoryPostProcessors源码解析
1. 流程图解2. 源码解读 public static void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory, List<BeanFactoryPostProcessor> beanFactoryPostProcessors) { // 保存已经处理过的Bean Name Set<String> processedBeans = n原创 2021-10-25 16:31:46 · 373 阅读 · 0 评论 -
死磕Spring系列:SpringBoot2.4.5源码解析
本文基于SpringBoot2.4.5。1. 启动过程流程图2. 源码解析我们从一个SpringBoot的启动类自顶向下分析,常规的启动类是这样的(按照约定将此类放置在项目顶层包):package cn.javayuli;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.auto.原创 2021-10-25 16:28:33 · 602 阅读 · 0 评论 -
搞定Spring的BeanFactory和FactoryBean
一、原创 2020-08-02 17:59:14 · 1853 阅读 · 0 评论 -
理解Spring AOP的实现方式与思想
Spring AOP简介如果说IOC是Spring的核心,那么面向切面编程就是Spring最核心的功能之一了,在数据库事务中,面向切面编程被广泛应用。AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。面向切面编程在OOP中,是面向对象开发,开发流程大致如下:面向切面编程,关注的是切面,相当于在自上而下的流程中横插进去,这种方式的好处就是对代码...原创 2020-06-06 15:12:07 · 1245 阅读 · 0 评论 -
理解并手写Spring MVC框架
一、前言Spring框架是大多Java程序员的必修课程,而SpringMVC是里面的重头戏,它大大的简化了Servlet的繁琐操作,让开发人员得以用更多的时间去处理业务。SpringMVC是一款经典的三层架构模式,M为Model(模型),V为View(视图),C为Controlle(控制器)。MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入原创 2020-05-18 18:08:33 · 940 阅读 · 0 评论 -
解决Spring整合quartz Job时Bean不能依赖注入的问题
一、问题描述项目环境:Spring项目整合org.quartz-scheduler问题描述:实现Job类的类中,不能使用@Autowired自动注入Bean二、解决教程新建CustomJobFactory类import org.quartz.spi.TriggerFiredBundle;import org.springframework.beans.factory.anno...原创 2020-04-21 16:10:38 · 2057 阅读 · 0 评论