E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
spring源码解析
spring源码解析
-基于注解的SpringAOP源码解析(一)
本文分析Spring的AOP模块的整体流程,分析过程需要使用一个简单的demo工程来启动Spring。https://github.com/cjinjun/spring-framework-demo写一个简单的接口和实现类,跟IOC源码解析那几篇文章用的同一个工程,publicinterfaceIOCService{publicStringhelloIoc();}publicclassIOCSer
程序员•进军SJF
·
2023-10-29 14:01
spring
编程语言
java
人人都能看懂的
Spring源码解析
,Spring声明式事务关于传播特性、事务挂起与恢复的处理
人人都能看懂的
Spring源码解析
,Spring声明式事务关于传播特性、事务挂起与恢复的处理原理解析AbstractPlatformTransactionManager事务传播特性事务挂起与恢复通过DataSourceTransactionManager
黄俊懿
·
2023-10-29 10:54
Spring
spring
java
spring
boot
后端
框架
【
spring源码解析
】spring容器初始化过程
SpringIOC容器加载原理1.AnnotationConfigApplicationContext(Config.class)@TestpublicvoiddefaultConfigClassBeanNameIsGeneratedProperly(){ApplicationContextcontext=newAnnotationConfigApplicationContext(Config.c
worn.xiao
·
2023-10-29 00:56
J2EE/spring
spring
java
mybatis
Spring源码解析
4.createBean()方法解析
createBeanInstance()protectedBeanWrappercreateBeanInstance(StringbeanName,RootBeanDefinitionmbd,@NullableObject[]args){//获取bd内部的Class对象。ClassbeanClass=resolveBeanClass(mbd,beanName);//这里判断当前bean是非公开类型
shstart7
·
2023-10-29 00:24
Spring
spring
java
ioc
源码
Spring源码解析
六 (Bean的初始化)
目录1.循环依赖解决2.FactoryBean情况处理3.依赖检查4.Bean的创建4.1实例化bean4.2依赖处理4.3属性填充4.4执行初始化方法5.Bean生命周期流程6.IOC容器的关闭6.1Web应用中容器的销毁6.2非Web应用中容器的销毁在前面分析IOC容器时有说到,在IOC容器初始化结束后,会开始初始化非延迟加载的单例Bean,对于其他Bean则会在调用getBean()方法时去
AnEra
·
2023-10-29 00:52
#
Spring5.x源码深度解析
Bean的初始化
spring源码解析
之ioc-BeanDefinition的加载
BeanDefinition的加载beanDefination的加载主要分为三种1、基于xml配置文件的beanDefinition的加载1、配置文件的读取publicstaticvoidmain(String[]args){创建ioc容器ApplicationContextcontext=newClassPathXmlApplicationContext("classpath:app1.xml"
mist蒙
·
2023-10-22 19:25
Spring源码解析
——事务的回滚和提交
正文上一篇文章讲解了获取事务,并且通过获取的connection设置只读、隔离级别等,这篇文章讲解剩下的事务的回滚和提交。最全面的Java面试网站回滚处理之前已经完成了目标方法运行前的事务准备工作,而这些准备工作最大的目的无非是对于程序没有按照我们期待的那样进行,也就是出现特定的错误,那么,当出现错误的时候,Spring是怎么对数据进行恢复的呢?protectedvoidcompleteTrans
程序员大彬
·
2023-10-19 10:24
spring
java
spring
java
Spring源码解析
——事务增强器
正文上一篇文章我们讲解了事务的Advisor是如何注册进Spring容器的,也讲解了Spring是如何将有配置事务的类配置上事务的,实际上也就是用了AOP那一套,也讲解了Advisor,pointcut验证流程,至此,事务的初始化工作都已经完成了,在之后的调用过程,如果代理类的方法被调用,都会调用BeanFactoryTransactionAttributeSourceAdvisor这个Advis
程序员大彬
·
2023-10-19 10:23
java
spring
spring
java
后端
Spring源码解析
之BeanDefinition
BeanDefinition简介BeanDefinition有三个实现类,ChildBeanDefinition、GenericBeanDefinition、RootBeanDefinition,三者都继承AbstractBeanDefinition,对三个子类共同的类信息进行抽象。如果配置文件中定义了父和子,则父用RootBeanDefinition表示,子用ChildBeanDefinitio
Java爱好狂.
·
2023-10-16 17:52
java
spring
servlet
Spring源码解析
3-beanFactoryPostProcessor的执行
refresh()中的invokeBeanFactoryPostProcessors(beanFactory)invokeBeanFactoryPostProcessors(),实例化并且调用所有已经注册了的beanFactoryPostProcessor,遵循指明的顺序PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessor
locket
·
2023-10-16 14:01
源码系列
java
spring
Spring源码解析
之八finishBeanFactoryInitialization方法初始化单例bean
Spring源码解析
之八finishBeanFactoryInitialization方法初始化单例bean七千字长文深刻解读,Spirng中是如何初始化单例bean的,和面试中最常问的Spring是如何解决循环依赖
程序员田同学
·
2023-10-16 05:43
Spring源码解析
——Spring事务是怎么通过AOP实现的?
正文此篇文章需要有SpringAOP基础,知道AOP底层原理可以更好的理解Spring的事务处理。最全面的Java面试网站自定义标签对于Spring中事务功能的代码分析,我们首先从配置文件开始人手,在配置文件中有这样一个配置:。可以说此处配置是事务的开关,如果没有此处配置,那么Spring中将不存在事务的功能。那么我们就从这个配置开始分析。根据之前的分析,我们因此可以判断,在自定义标签中的解析过程
程序员大彬
·
2023-10-16 02:56
spring
java
spring
java
后端
Spring源码解析
——AOP目标方法和增强方法的执行
正文上一篇博文中我们讲了代理类的生成,这一篇主要讲解剩下的部分,当代理类调用时,目标方法和代理方法是如何执行的,我们还是接着上篇的ReflectiveMethodInvocation类Proceed方法来看。最全面的Java面试网站publicObjectproceed()throwsThrowable{//首先,判断是不是所有的interceptor(也可以想像成advisor)都被执行完了。/
程序员大彬
·
2023-10-15 06:47
spring
java
spring
java
后端
Spring源码解析
——@Transactional注解的声明式事物介绍
正文面的几个章节已经分析了spring基于@AspectJ的源码,那么接下来我们分析一下Aop的另一个重要功能,事物管理。最全面的Java面试网站事务的介绍1.数据库事物特性原子性多个数据库操作是不可分割的,只有所有的操作都执行成功,事物才能被提交;只要有一个操作执行失败,那么所有的操作都要回滚,数据库状态必须回复到操作之前的状态一致性事物操作成功后,数据库的状态和业务规则必须一致。例如:从A账户
程序员大彬
·
2023-10-15 06:15
java
spring
spring
数据库
java
Spring源码解析
——推断构造方法的底层原理分析
概述Spring中的一个bean,需要实例化得到一个对象,而实例化就需要用到构造方法。一般情况下,一个类只有一个构造方法:要么是无参的构造方法要么是有参的构造方法如果只有一个无参的构造方法,那么实例化就只能使用这个构造方法了。如果只有一个有参的构造方法,那么实例化时能使用这个构造方法吗?要分情况讨论:使用AnnotationConfigApplicationContext,会使用这个构造方法进行实
还没秃的小菜鸡
·
2023-10-13 20:23
Spring
spring源码解析
(四) 推断构造方法
该篇以createBeanInstance方法为起点分析推断构造方法怎么一步步到createBeanInstance方法refresh()-》finishBeanFactoryInitialization-》preInstantiateSingletons-》getBean-》doGetBean-》createBean-》doCreateBean-》createBeanInstance推断构造方法
干了这杯柠檬多
·
2023-10-13 20:52
springboot
spring
Spring源码解析
——创建AOP代理之获取增强器
正文在上一篇的博文中我们讲解了通过自定义配置完成了对AnnotationAwareAspectJAutoProxyCreator类型的自动注册,那么这个类到底做了什么工作来完成AOP的操作呢?首先我们看看AnnotationAwareAspectJAutoProxyCreator的层次结构,如下图所示:内容摘自我的学习网站:topjavaer.cn从上图的类层次结构图中我们看到这个类实现了Bean
程序员大彬
·
2023-10-12 10:27
spring
java
spring
java
Spring源码解析
——AOP的使用及AOP自定义标签
正文我们知道在面向对象OOP编程存在一些弊端,当需要为多个不具有继承关系的对象引入同一个公共行为时,例如日志,安全检测等,我们只有在每个对象里引入公共行为,这样程序中就产生了大量的重复代码,所以有了面向对象编程的补充,面向切面编程(AOP),AOP所关注的方向是横向的,不同于OOP的纵向。接下来我们就详细分析下spring中的AOP。首先我们从动态AOP的使用开始。最全面的Java面试网站AOP的
程序员大彬
·
2023-10-12 10:57
java
spring
spring
java
后端
Spring源码解析
—— AOP代理的生成
本文已经收录到大彬精心整理的大厂面试手册,包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等高频面试题,非常实用,有小伙伴靠着这份手册拿过字节offer~需要的小伙伴可以自行下载:http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY
程序员大彬
·
2023-10-12 10:23
java
spring
spring
java
后端
Spring源码解析
-@Conditional注解
Spring死磕系列-@Conditional注解一、Conditional注解介绍Conditional注解表示仅当所有指定条件都匹配时,该组件才会被注册。二、Conditional注解三种使用方式作为类级别的注解使用:作用于任何直接或间接被@Component注解的类上,除此之外还包括@Configuration注解的类作为方法级别的注解使用:作用于任何被@Bean注解的方法上作为元注解使用:
KiminaPera
·
2023-10-11 12:41
spring
spring
spring
boot
java
Spring源码解析
:(八)事务管理
事务管理前言spring的事务传播级别Spring中事务的API事务的源码实现@EnableTransactionManagementAutoProxyRegistrar总结前言本节主要讲讲Sring的事务管理方面,关于事务管理相信大多读者也都有了解和使用,关于数据库方面的事务管理本节就不再叙述,读者可以看本人的mysql方面的文章浅谈Mysql事务spring的事务传播级别事务往往在servic
一白丁
·
2023-10-11 04:33
Spring
Spring源码解析
(十二):TransactionInterceptor事务拦截器
Spring源码系列文章
Spring源码解析
(一):环境搭建
Spring源码解析
(二):bean容器的创建、默认后置处理器、扫描包路径bean
Spring源码解析
(三):bean容器的刷新
Spring源码解析
冬天vs不冷
·
2023-10-11 04:55
spring
spring
java
数据库
Spring源码解析
(十一)-初始化bean
Spring版本5.2.5.RELEASE参考《芋道源码》源码解读1.AbstractAutowireCapableBeanFactory#initializeBeanprotectedObjectinitializeBean(finalStringbeanName,finalObjectbean,@NullableRootBeanDefinitionmbd){if(System.getSecur
秋水畏寒
·
2023-10-10 14:04
Spring源码解析
(8)——ApplicationContext
回顾上篇上篇文章《属性注入》,我们已经分析完了bean中的属性是如何注入进去的。到目前为止我们已经分析完了Spring创建一个bean的全流程。先是解析配置的xml文件,将xml文件里配置的信息解析成BeanDefinition,然后通过BeanDefinition来创建bean,同时也会将bean的属性值注入。这里面也涉及到一个循环依赖的问题,也分析了一下Spring是如何来解决循环依赖的。上面
tack_back
·
2023-10-10 12:23
Spring源码解析
spring
java
Spring源码解析
——启动过程详解
基于Spring的启动看看Spring进行了哪些操作,在前面简单写过,现在详细概述一次。AnnotationConfigApplicationContextapplicationContext=newAnnotationConfigApplicationContext(AppConfig.class);System.out.println(applicationContext.getBean("u
还没秃的小菜鸡
·
2023-10-10 12:20
Spring
Spring源码解析
——初始化解析
前言1:实例化一个ApplicationContext的对象;2:调用bean工厂后置处理器完成扫描;3:循环解析扫描出来的类信息;4:实例化一个BeanDefinition对象来存储解析出来的信息;5:把实例化好的beanDefinition对象put到beanDefinitionMap当中缓存起来,以便后面实例化bean;6:再次调用bean工厂后置处理器;7:当然spring还会干很多事情,
还没秃的小菜鸡
·
2023-10-10 12:50
Spring
Spring源码解析
三——IOC容器的初始化过程
简单来说,IOC容器的初始化是由refresh()方法来启动的,这个方法标志着IOC容器的正式启动,具体来说,这个启动包括——BeanDefinition的Resource定位;BeanDefinition的载入;BeanDefinition的注册Spring中把上面三个过程分开,使用不同的模块;使用相应的ResourceLoader,BeanDefinitionReader等模块;第一个过程是R
wesen12
·
2023-10-10 12:19
Spring源码解析
——IoC部分(一)
1概述IoC的意义在于它优雅地解决了类之间的复杂依赖关系,依赖对象的获得方式被反转,对象不必主动去获取被依赖的对象,容器会在适当的时机主动把被依赖对象交到对象手中,通过一种叫做依赖注入的方式。根据《Spring技术内幕》的介绍,IoC的两个核心接口是BeanFactory和ApplicationContext,它们的操作对象Bean被抽象成BeanDefinition。BeanFactory和Ap
旧城灯火
·
2023-10-10 12:18
Java
java
spring
ioc
源码
Spring源码解析
——IOC之循环依赖处理
什么是循环依赖循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图所示:注意,这里不是函数的循环调用,是对象的相互依赖关系。循环调用其实就是一个死循环,除非有终结条件。最全面的Java面试网站Spring中循环依赖场景有:(1)构造器的循环依赖(2)field属性的循环依赖。对于构造器的循环依赖,Spring是无法解
程序员大彬
·
2023-10-10 12:13
java
spring
spring
java
后端
Spring源码解析
——IOC之bean 的初始化
正文一个bean经历了createBeanInstance()被创建出来,然后又经过一番属性注入,依赖处理,历经千辛万苦,千锤百炼,终于有点儿bean实例的样子,能堪大任了,只需要经历最后一步就破茧成蝶了。这最后一步就是初始化,也就是initializeBean(),所以这篇文章我们分析doCreateBean()中最后一步:初始化bean。我回到之前的doCreateBean方法中,如下在pop
程序员大彬
·
2023-10-10 12:13
java
spring
spring
java
后端
Spring源码解析
——ApplicationContext容器refresh过程
正文在之前的博文中我们一直以BeanFactory接口以及它的默认实现类XmlBeanFactory为例进行分析,但是Spring中还提供了另一个接口ApplicationContext,用于扩展BeanFactory中现有的功能。ApplicationContext和BeanFactory两者都是用于加载Bean的,但是相比之下,ApplicationContext提供了更多的扩展功能,简而言之
程序员大彬
·
2023-10-10 12:35
spring
java
spring
java
后端
spring源码解析
八(创建单例bean)
上一节,研究了下获取bean的源码,逻辑还是比较简单的,这次,我们一起来研究下创建bean的源码,话不多说,我们直接看源码发现bean的创建的代码都是在AbstractAutowireCapableBeanFactory这个类中,之前分析@Autowired注解的时候,也是在这个类中createBean的其他方法我在这里就不分析了,咱们具体就分析doCreateBeanAbstractAutowi
为梦想前进
·
2023-10-10 05:08
spring源码解析
——IOC之bean创建
正文在Spring中存在着不同的scope,默认是singleton,还有prototype、request等等其他的scope,他们的初始化步骤是怎样的呢?这个答案在这篇博客中给出。singletonSpring的scope默认为singleton,第一部分分析了从缓存中获取单例模式的bean,但是如果缓存中不存在呢?则需要从头开始加载bean,这个过程由getSingleton()实现。其初始
程序员大彬
·
2023-10-09 02:42
java
spring
spring
java
后端
Spring源码解析
——IOC属性填充
正文doCreateBean()主要用于完成bean的创建和初始化工作,我们可以将其分为四个过程:最全面的Java面试网站createBeanInstance()实例化beanpopulateBean()属性填充循环依赖的处理initializeBean()初始化bean第一个过程实例化bean在前面一篇博客中已经分析完了,这篇博客开始分析属性填充,也就是populateBean()protect
程序员大彬
·
2023-10-09 02:11
spring
java
spring
java
后端
Spring源码解析
(十一):spring事务配置类源码
Spring源码系列文章
Spring源码解析
(一):环境搭建
Spring源码解析
(二):bean容器的创建、默认后置处理器、扫描包路径bean
Spring源码解析
(三):bean容器的刷新
Spring源码解析
冬天vs不冷
·
2023-10-09 00:15
spring
spring
java
数据库
spring源码解析
-循环依赖
讲解内容:spring的循环依赖---属性注入--自动注入springbean的生命周期springbean实例化的过程spring循环依赖讲解模式打断点,一步一步走过springbean循环依赖解决过程。由于spring创建bean过程繁杂,重要的代码会讲解,不重要的忽略。自动注入也是个重点,后面文章会再次讲解到。本笔记是个人学习子路老师的课程所做的,有兴趣的可以去看看他的课,讲的更好带着问题学
倔强青铜弟中弟
·
2023-10-08 15:00
Spring源码解析
系列汇总
相信我,你会收藏这篇文章的本篇文章是这段时间撸出来的
Spring源码解析
系列文章的汇总,总共包含以下专题。
Java学习录
·
2023-10-06 01:14
Spring源码解析
(十八)-PropertyOverrideConfigurer
Spring版本5.2.5.RELEASE参考《芋道源码》源码解读PropertyOverrideConfigurer允许我们对Spring容器中配置的任何我们想处理的bean定义的property信息进行覆盖替换。它与PropertySourcesPlaceholderConfigurer的区别在于,PropertyOverrideConfigurer在于替换已经具体化的property信息,而
秋水畏寒
·
2023-10-02 21:27
Spring源码解析
-构造函数
1、构造函数概述构造函数中,主要创建两个对象分别用来读取注解参数和classpath下的文件AnnotatedBeanDefinitionReader专门读取注解参数的ReaderClassPathBeanDefinitionScanner专门读取classpath下的文件,例如yml、properties等。AnnotationConfigApplicationContext可以通过扫描指定的包
智_永无止境
·
2023-09-27 15:54
源码分析
spring
java
源码
手撕
Spring源码解析
Bean的生命周期
这里我们主要分析生命周期从以下方法进入:bean的实例化(开辟内存空间)-》bean的属性填充-》bean的初始化;SpringBean的加载肯定是找到Bean的定义信息,来源有xml、yml等文件;调用如下入口方法,加载配置文件进入源码解析;先缕清大体脉络,后深入;入口:ClassPathXmlApplicationContext()创建spring以用程序上下文,调用构造方法,设置配置文件路径
LeeGaKi
·
2023-09-27 13:12
spring
java
数据库
spring源码解析
——IOC-开启 bean 的加载
概述前面我们已经分析了spring对于xml配置文件的解析,将分析的信息组装成BeanDefinition,并将其保存注册到相应的BeanDefinitionRegistry中。至此,SpringIOC的初始化工作完成。接下来我们将对bean的加载进行探索。BeanFactory当我们显示或者隐式地调用getBean()时,则会触发加载bean阶段。如下:publicclassAppTest{@T
·
2023-09-26 08:56
后端javaspring
spring源码解析
——IOC-开启 bean 的加载
概述前面我们已经分析了spring对于xml配置文件的解析,将分析的信息组装成BeanDefinition,并将其保存注册到相应的BeanDefinitionRegistry中。至此,SpringIOC的初始化工作完成。接下来我们将对bean的加载进行探索。BeanFactory当我们显示或者隐式地调用getBean()时,则会触发加载bean阶段。如下:publicclassAppTest{@T
程序员大彬
·
2023-09-26 08:10
spring
java
spring
java
rpc
Spring源码解析
—— IOC默认标签解析(下)
正文在上一篇我们已经完成了从xml配置文件到BeanDefinition的转换,转换后的实例是GenericBeanDefinition的实例。本文主要来看看标签解析剩余部分及BeanDefinition的注册。默认标签中的自定义标签解析在上篇博文中我们已经分析了对于默认标签的解析,我们继续看戏之前的代码,如下图片中有一个方法:delegate.decorateBeanDefinitionIfRe
程序员大彬
·
2023-09-26 08:39
计算机
java
spring
spring
java
后端
spring源码解析
——IOC之自定义标签解析
概述之前我们已经介绍了spring中默认标签的解析,解析来我们将分析自定义标签的解析,我们先回顾下自定义标签解析所使用的方法,如下图所示:我们看到自定义标签的解析是通过BeanDefinitionParserDelegate.parseCustomElement(ele)进行的,解析来我们进行详细分析。自定义标签的使用扩展Spring自定义标签配置一般需要以下几个步骤:创建一个需要扩展的组件定义一
程序员大彬
·
2023-09-26 08:07
java
spring
spring
数据库
java
spring源码解析
——IOC之自定义标签解析
概述之前我们已经介绍了spring中默认标签的解析,解析来我们将分析自定义标签的解析,我们先回顾下自定义标签解析所使用的方法,如下图所示:我们看到自定义标签的解析是通过BeanDefinitionParserDelegate.parseCustomElement(ele)进行的,解析来我们进行详细分析。自定义标签的使用扩展Spring自定义标签配置一般需要以下几个步骤:创建一个需要扩展的组件定义一
·
2023-09-25 22:42
javaspring
spring源码解析
以及常见的面试题
一概述spring是一个开源框架,以ioc和aop为核心,像是java语言的一个生态,是服务端开发的基石,因为springboot,cloud等框架是以spring为基础进行开发的。IOC(InversionofController,控制反转),将原本在程序中手动创建对象的控制权,交由给Spring框架来管理。IOC容器是Spring用来实现IOC的载体,IOC容器实际上就是一个Map(key,v
zpl_well
·
2023-09-25 18:13
spring
java
面试
Spring源码解析
—— IOC默认标签解析(下)
正文在上一篇我们已经完成了从xml配置文件到BeanDefinition的转换,转换后的实例是GenericBeanDefinition的实例。本文主要来看看标签解析剩余部分及BeanDefinition的注册。默认标签中的自定义标签解析在上篇博文中我们已经分析了对于默认标签的解析,我们继续看戏之前的代码,如下图片中有一个方法:delegate.decorateBeanDefinitionIfRe
·
2023-09-25 09:35
后端springjava
Spring源码解析
(1)
到底什么是spring?应该好好的抽时间去查看官方文档,不要再说spring就是IOC,AOP啦。spring官网springframework截图注意到Coretechnologie部分都是spring的核心特性。由于博主能力有限,并没有对spring进行过学习和相关的使用,所以学习分为俩部分,一方面去了解大概spring应该如何去使用,另一个方面去走源码。1.搭建spring的环境普通的Mav
Laniakea_01d0
·
2023-09-20 15:02
简单
Spring源码解析
(一) 容器启动
一、创建spring容器首先建立Test类和service类在Test类中创建spring容器自定义两个注解@ComponmentScan和@Componment注解,提供扫描路径方法packagecom.spring;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lan
贩卖ლ日落
·
2023-09-15 04:17
spring
rpc
java
02、
spring源码解析
之扩展原理BeanFactoryPostProcessor和BeanDefinitionPostProcessor和ApplicationListener
一、Spring是如何发布事件的?ApplicationListener(观察者模式)1.1)自己写一个TestApplicationListener实现ApplicationListener接口,并且把该组件加入到容器中.@Configuration@ComponentScan("com.test")publicclassMainConfig{}@ComponentpublicclassTest
vannesspeng
·
2023-09-12 01:19
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他