Spring-源码解析
文章平均质量分 85
Spring-源码解析
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
SpringBoot(@ControllerAdvice) ResponseBodyAdvice接口全局统一返回控制,Api返回值是String 类型时异常
简而言之:因为API接口返回的是String类型,默认会被StringHttpMessageConverter转换器捕获(支持所有MediaType 并且 接口返回值是 String,并在RequestResponseBodyMethodProcessor#handleReturnValue,writeWithMessageConverters方法中的 canWrite 方法 进行判断通过后,加入可被选择的返回值转换器中)解决方案:在controlleradvice中增加单独处理。原创 2023-05-25 17:04:56 · 657 阅读 · 0 评论 -
循环依赖【讲的很好】
一、前言这一篇博文主要讲一下我们spring是怎么解决循环依赖的问题的。二、什么是循环依赖首先我们需要明确,什么是循环依赖呢?这里举一个简单的例子:@Servicepublic class A { @Autowired private B b;}@Servicepublic class B { @Autowired private A a;}以这个例子来看,我们声明了a、b两个bean,且a中需要注入一个b,b中需要注入一个a。结合我们上篇转载 2020-09-15 20:24:10 · 1901 阅读 · 0 评论 -
@ComponentScan源码分析
介绍@Enable编程模型,其中提到在org.springframework.context.annotation.ConfigurationClassParser#doProcessConfigurationClass方法里面有对配置类上面的@ComponentScan处理的逻辑,文章里面对@ComponentScan的处理逻辑简单带过,着重奖了对@Import的注解处理逻辑,这里将详细描述@C...转载 2020-03-01 11:55:10 · 813 阅读 · 0 评论 -
Spring源码系列之容器启动流程
1. Demo创建2. 启动3. 入口4. 基础概念5. AnnotationConfigApplicationContext的构造方法5.1 this()调用5.2 register(annotatedClasses)5.3 执行refresh()方法6. refresh()方法6.1 invokeBeanFactoryPostProcessors()6.2 registerBeanPostPr...转载 2020-02-28 19:39:09 · 1025 阅读 · 0 评论 -
相亲相爱的@Import和@EnableXXX
1. @Import注解通过Import注解,我们有三种方式可以向Spring容器中注册Bean。相当于Spring中XML的标签。1.1 直接注册例如:@Import(RegularBean.class)。(RegularBean是开发人员自定义的一个类)。代码如下,在代码中通过在AppConfig类上加了一行注解:@Import(RegularBean.class),这样...转载 2020-02-27 08:16:20 · 1026 阅读 · 0 评论 -
ConfigurationClassPostProcessor —— Spring中最!最!最!重要的后置处理器!没有之一!!!
0. 疑惑在阅读本文之前,可以先思考一下以下几个问题。(1) @Configuration注解的作用是什么,Spring是如何解析加了@Configuration注解的类? (2) Spring在什么时候对@ComponentScan、@ComponentScans注解进行了解析? (3) Spring什么时候解析了@Import注解,如何解析的? (4) Spring什么...原创 2020-02-27 08:10:44 · 1460 阅读 · 2 评论 -
spring默认启动位置以及contextConfigLocation设置源码解析
这几天在看spring的源码,涉及到spring启动位置的部分,下面就看看spring到底是从哪儿开始加载的。本文使用的是spring3.0M3首先spring的加载会借助一个监听器ContextLoaderListener,直接上web.xml文件Xml代码listener>listener-class>org.springframew转载 2012-11-25 13:17:01 · 6829 阅读 · 1 评论 -
Spring代理对象的生成及运行机制源码解读
https://blog.csdn.net/songyang19871115/article/details/54345224转载 2018-10-23 18:30:47 · 781 阅读 · 0 评论 -
Spring IOC源码详解之总体结构 及 容器初始化
https://blog.csdn.net/yujin753/article/details/47043143IOC, spring的核心,贯穿Spring始终。直观的来说,就是由spring来负责控制对象的生命周期和对象间的关系,将对象之间的关系抽象出来,通过spring容器控制对象生成时机,减少对象之间的耦合度。开启Spring IOC源码学习SpringIOC 的主要依赖源码是 sp...转载 2017-08-03 17:43:25 · 816 阅读 · 0 评论 -
Spring IOC源码详解之容器初始化
https://blog.csdn.net/yujin753/article/details/47065211先来看一段简短的代码,使用IOC比较典型的代码ClassPathResource res = new ClassPathResource("beans.xml"); DefaultListableBeanFactory factory = new DefaultListabl...转载 2019-06-12 17:45:28 · 609 阅读 · 1 评论 -
Spring源码初探-IOC(4)-Bean的初始化-循环依赖的解决
https://www.jianshu.com/p/6c359768b1dc前言在实际工作中,经常由于设计不佳或者各种因素,导致类之间相互依赖。这些类可能单独使用时不会出问题,但是在使用Spring进行管理的时候可能就会抛出BeanCurrentlyInCreationException等异常 。当抛出这种异常时表示Spring解决不了该循环依赖,本文将简要说明Spring对于循环依赖的解...转载 2019-06-12 16:23:45 · 612 阅读 · 0 评论 -
Spring源码初探-IOC(1)-Bean的初始化
https://www.jianshu.com/p/375ef7095139前言对于一名Java码农来说,Spring真是太重要了。目前Spring的体系已经发展得非常壮大,其底层基石core,beans,context非常牢固。spring 体系结构图Bean初始化个人认为,Spring最原始或者最基础的功能是“容器”,帮你管理着一堆bean的生命周期,任你取用,要想更好...转载 2019-06-12 17:50:35 · 660 阅读 · 0 评论 -
Spring源码初探-IOC(2)-Bean的初始化-自定义标签解析
https://www.jianshu.com/p/94a4e0ff731f前言前面一文介绍的是Spring对于DefaultElement的解析,例如bean/import/alias等,但是在Spring体系中也存在很多扩展标签,例如事务、aop等非Default标签。按一般的套路通常是先介绍在Spring体系下如何在XML配置文件中自定义标签,本文先介绍Spring对于自定义标...转载 2019-06-12 17:53:30 · 689 阅读 · 0 评论 -
Spring源码初探-IOC(3)-Bean的初始化-bean的加载
https://www.jianshu.com/p/ecc60703d315前言前面两篇文章主要介绍的是xml到BeanDefinition的过程,我们知道在使用Spring的过程中通常直接使用getBean(beanName)的方式,getBean返回的是实例化并且已经完成初始化后的对象。对于我们平时使用来说,创建一个对象通常会使用new,或者使用反射。我们使用反射instantiati...转载 2019-06-12 18:19:43 · 643 阅读 · 0 评论 -
Spring源码初探-IOC(5)-ApplicationContext功能扩展及其扩展点
https://www.jianshu.com/p/2692bf784976前言前面几篇关于Spring的文章简单阐述了使用BeanFactory作为容器时bean的初始化过程。然而在实际使用中,我们并不会直接接触和编码BeanFactory,我们通常会使用另外一个功能更强、更完善的容器ApplicationContext。本文粗略讲述了ApplicationContext对于BeanFa...转载 2019-06-12 20:03:52 · 712 阅读 · 0 评论 -
Spring源码分析:循环依赖
https://blog.csdn.net/u014634338/article/details/83866305前言原文发布于: http://blog.ztgreat.cn/article/59前面分析了Spring BeanFactory,接着分析了Spring IOC的初始化过程,对整个流程有了一定的认识,当然没有面面俱到,当然也不可能,我自己本身定位就是把握主要脉络,前面遗留了...转载 2019-06-12 22:13:53 · 954 阅读 · 0 评论 -
【Spring源码分析】循环依赖的处理
[原创]个人理解,请批判接受,有误请指正。转载请注明出处:https://heyfl.github.io/Spring/Spring-Circular-Dependencies.html看源码的同学可以查看我的GitHub上面在官方的基础上加入了大量中文注释,帮助理解,喜欢的话也可以给个Star XD要了解的知识什么是循环依赖存在哪些循环依赖Setter循环依赖...转载 2019-06-12 23:00:09 · 968 阅读 · 0 评论 -
Spring源码解析:注册bean到spring容器(BeanDefinitionRegistryPostProcessor接口)
关于注册bean到容器我们开发的类,如果想注册到spring容器,让spring来完成实例化,常用方式如下:1. xml中通过bean节点来配置;2. 使用@Service、@Controller、@Component等注解;其实,除了以上方式,spring还支持我们通过代码来将指定的类注册到spring容器中,也就是今天我们要实践的主要内容,接下来就从spring源码...转载 2020-02-27 19:59:13 · 1147 阅读 · 0 评论 -
Spring之基于Java类的配置bean的加载注册流程
描述Spring Bean定义的三种方式:基于XML的配置 基于注解的配置,在类中加入如下注解通过包扫描加载注册bean: @Component:当对组件的层次难以定位的时候使用这个注解 @Controller:表示控制层的组件 @Service:表示业务逻辑层的组件 @Repository:表示数据访问层的组件基于Java类的配置:使用...转载 2020-02-26 15:00:47 · 1148 阅读 · 0 评论 -
Spring之class读取生成元数据流程
描述在ClassPathBeanDefinitionScanner中看到spring通过扫描给定的包路径,获取到对应的class资源并判断是否生成BeanDefinition注册到IOC容器中,接下来根据源码来看spring是怎么通过class资源生成元数据ClassPathBeanDefinitionScanner分析中看到 MetadataReaderFactory.getMet...转载 2020-02-26 14:57:46 · 1124 阅读 · 0 评论 -
Spring源码解析--Spring配置文件解析NamespaceHandler
接下来我们介绍一下Spring提供的NamespaceHandler的处理机制,简单来说就是命名空间处理器,Spring为了开放性提供了NamespaceHandler机制,这样我们就可以根据需求自己来处理我们设置的标签元素。Spring提供的NamespaceHandler处理器:NamespaceHandler提供的接口方法:public interface Namespac...转载 2019-09-27 18:37:05 · 752 阅读 · 0 评论 -
Spring源码分析之——spring 事务管理实现方式 (不太清晰,不明白aop会看不懂)
注意:这里只是分析spring事务的实现方式。也就是spring的事务管理是怎么发生作用的,而不分析具体的实现细节(细节将在下一篇里面分析).转载:http://michael-softtech.iteye.com/blog/813835紧接着上一篇提到的,Spring是通过NameSpaceHandler来解析配置文件中的标签的。下面就已事务的配置为例,讲述一下事务配置转载 2016-05-04 06:31:53 · 2487 阅读 · 0 评论 -
Spring源码分析——BeanFactory体系之接口详细分析
前面的博文分析了Spring的Resource资源类Resouce。今天开始分析Spring的IOC部分。众所周知,IOC是Spring框架最迷人的地方。它最重要的接口,就是BeanFactory了。BeanFactory有着庞大的继承、实现体系,有众多的子接口、实现类。本博文的目标就是抽丝剥茧,从源代码入手,分析Spring的实现和架构,从中进步。 在阅读的过程中,可以参照S转载 2016-05-04 10:06:39 · 1244 阅读 · 0 评论 -
spring 3源码解析之如何解析"import", "alias", "bean"标签
解析的步骤:1、加载web.xml、加载监听器org.springframework.web.context.ContextLoaderListener2、ContextLoaderListener初始化initWebApplicationContext方法创建org.springframework.web.context.support. XmlWebApplica转载 2016-12-02 10:26:57 · 1285 阅读 · 0 评论