
Spring
文章平均质量分 69
spring使用、源码分析
bboyzqh
时刻保持好奇心~
展开
-
Spring Environment 注入引起NPE问题排查
写业务代码遇到使用 Spring Environment 注入为 null 的情况原创 2023-12-21 23:41:12 · 518 阅读 · 0 评论 -
Spring容器中scope为prototype类型Bean的回收机制
通过 AutowireCapableBeanFactory 方法 autowireBean 可以将对象装配成 Spring 管理的标准 Bean 对象,主要是用于来填充有注解的属性,这样才可以使用 Spring 的 DI 特性。通过代码 new 出来的对象使用 AutowireCapableBeanFactory 方法 autowireBean 填充属性成为标准 Spring Bean 后不用担心内存溢出的问题,本质上和 Spring prototype Bean 的回收机制一样,使用完就有可能被原创 2023-12-16 15:22:21 · 813 阅读 · 0 评论 -
Spring @Configuration 注解解析原理
@Configuration 注解是 Spring 3.0 版本引入的新特性(目前版本 6.0.11),它用于将一个类标记为配置类,通过配置类可以定义和组装 Spring Bean。一般来说注解都会有相应的解析器,@Configuration 注解靠 ConfigurationClassParser 来解析,时机是在 BeanFactory 的后处理阶段(ConfigurationClassPostProcessor)原创 2023-09-02 23:20:37 · 482 阅读 · 0 评论 -
Spring中@Value注解取值为null问题排查
Spring中@Value注解取值为null问题排查原创 2023-08-27 09:06:34 · 5224 阅读 · 0 评论 -
Spring Boot spring.factories 用法及原理
spring.factories 配置为 Spring Boot 的自动装配提供了方便,在此基础上产生的 Spring Boot starter 机制为很多中间件开发带来了方便。原创 2022-02-19 22:07:35 · 5295 阅读 · 0 评论 -
Spring编程式事务实现方式和注意点
Spring事务使用有两种方式:声明式事务(如通过@Transactional实现注解方式或者xml配置方式)和编程式事务方式,优缺点如下: 声明式事务:通过注解和xml配置使开发者只关注业务开发,而不需要关注事务的提交和回滚,但最小粒度在方法上,不能对一块代码增加事务,另外也要考虑事务嵌套带来的副作用(比如长事务)。 编程式事务:比较灵活,需要开发者在代码中手动的管理事务的开启、提交、回滚等操作,但若对事务理解不够深刻,容易出错。这里重点讲编程式事务方式使用的案例和注意点,使用方式如下:..原创 2021-07-17 14:55:06 · 784 阅读 · 0 评论 -
Spring Bean加载过程
文章目录Spring Bean的加载过程Spring Bean的创建过程Spring Bean循环依赖解决方式近期重新阅读Spring源码,总结了Spring Bean的加载过程如下:Spring Bean的加载过程Spring Bean的创建过程Spring Bean循环依赖解决方式Spring中将循环依赖分成三种情况,构造器循环依赖:无法解决,抛出BeanCurrentlyInCreationException异常。setter循环依赖:只能解决单例Bean的循环依赖。protot原创 2021-03-06 23:25:15 · 393 阅读 · 0 评论 -
Spring源码:spring-mybatis重要类
配置一:<bean id="defaultSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="defaultDataSource" /&am原创 2018-11-02 16:36:58 · 288 阅读 · 0 评论 -
Spring源码:JDBC相关类
文章目录预编译语句与存储过程创建预编译语句设值结果集自定义回调功能预编译语句与存储过程创建**PreparedStatementCreator接口:**JdbcTemplate类使用的两个中央回调接口之一。这个接口在给定连接的情况下创建一个PreparedStatement,由JdbcTemplate类提供。其实现负责提供SQL和任何必要的参数。CallableStatementCr...原创 2018-10-23 21:04:15 · 316 阅读 · 0 评论 -
Spring源码:AOP代理方法调用过程
原创 2018-10-08 21:27:13 · 337 阅读 · 0 评论 -
Spring源码:创建AOP代理过程
原创 2018-10-08 21:26:24 · 271 阅读 · 0 评论 -
Spring源码:AOP常用类
文章目录类简介1.切点类2. 匹配类3. 代理类4. Advisor类5.适配器6. InterceptorAndDynamicMethodMatcher7. 织入自动代理生成器类简介1.切点类**AspectJExpressionPointcut类:**Pointcut接口的实现,该实现使用AspectJ weaver计算切入点表达式的切入点**InstantiationMode...原创 2018-10-08 21:24:25 · 488 阅读 · 0 评论 -
Spring源码:AnnotationAwareOrderComparator
文章目录AnnotationAwareOrderComparator简介:源码解析AnnotationAwareOrderComparator简介:AnnotationAwareOrderComparator是OrderComparator的子类,用来支持Spring的Ordered类、@Order注解和@Priority注解。源码解析public class AnnotationAwar...原创 2018-10-08 21:23:24 · 5200 阅读 · 0 评论 -
Spring Bean生命周期
1.Bean加载过程Step 1:尝试从缓存中获取Bean实例(从singletonFactory获取,即singletonFactory.getObject()方法) singletonObjects:BeanName和bean实例之间的关系 singletonFacories:BeanName和bean工厂之间的关系 earlySingletonObjects:...原创 2018-03-21 00:16:15 · 459 阅读 · 0 评论 -
Spring源码:工厂方法实例化Bean
源代码分析:源代码该函数在类ConstructorResolver(该类的作用:构造函数和工厂方法解析的代理,主要作用通过参数匹配执行构造函数解析)为了简化分析,去除了不必要的异常和日志。public BeanWrapper instantiateUsingFactoryMethod(final String beanName, final RootBe...原创 2018-08-31 18:13:01 · 575 阅读 · 0 评论 -
Spring源码:PropertyValues类及属性注入一
概要相关类属性注入概要Spring获取Bean的实例时,需要把配置的属性值解析到PropertyValues,然后填充入BeanWrapper中相关类**MutablePropertyValues类:**PropertyValues接口的默认实现public class MutablePropertyValues implements Pro...原创 2018-09-04 22:48:16 · 7802 阅读 · 0 评论 -
Spring源码:PropertyValues类及属性注入二
主代码1. RuntimeBeanReference类型2. RuntimeBeanNameReference类型3. BeanDefinitionHolder类型4. BeanDefinition类型5. ManagedArray类型6. ManagedList类型7. ManagedSet类型8. ManagedMap类型9. ManagedProperties类型...原创 2018-09-04 22:49:14 · 4451 阅读 · 0 评论 -
Spring源码:Converter及TypeConverter类解析
三类Converter接口TyperConverterPropertyEditor总结三类Converter接口Spring提供了3种converter接口,分别是Converter、ConverterFactory和GenericConverter.一般用于1:1, 1:N, N:N的source->target类型转化。Converter接口...原创 2018-09-02 16:37:44 · 5693 阅读 · 0 评论 -
Spring源码:ConversionService类解析
整体类图:一般来说,用户可以使⽤用内置的或者⾃己实现Converter接⼝来实现类型转换,ConversionService类接口内部调用Converter接口实现类来实现类型转换ConversionService接口:类型转换的服务接口,这是转换系统的入口,调用convert(Object, Class)进行一次线程安全的类型转换。public interface Conversi...原创 2018-09-02 16:39:37 · 3597 阅读 · 0 评论 -
Spring源码:Bean初始化过程
主代码1. 激活Aware方法2. 后处理方法(初始化之前调用)3. 激活自定义的init方法4. 后处理方法(初始化之后调用)主代码bean完成属性注入之后,接着要以bean进行初始化,初始化过程在AbstractAutowireCapableBeanFactory抽象类中,核心代码如下:protected Object initialize...原创 2018-09-06 11:11:51 · 2559 阅读 · 0 评论 -
Spring源码:再读Bean加载过程
1.Bean加载过程Step 1:尝试从缓存中获取Bean实例(从singletonFactory获取,即singletonFactory.getObject()方法) singletonObjects:BeanName和bean实例之间的关系 singletonFacories:BeanName和bean工厂之间的关系 earlySingletonObjects:...原创 2018-09-06 11:12:54 · 258 阅读 · 0 评论 -
Spring源码:AbstractAspectJAdvice抽象类
文章目录AbstractAspectJAdvice抽象类扩展类AbstractAspectJAdvice抽象类用途:AOP基类,用来包装AspectJ切面或AspectJ注解的通知方法public abstract class AbstractAspectJAdvice implements Advice, AspectJPrecedenceInformation, Serializable...原创 2018-10-08 21:20:33 · 1019 阅读 · 0 评论 -
Spring源码:Advice接口
文章目录1.Advice接口使用2.Advice接口源码分析2.2 AfterReturningAdvice接口2.3 ThrowsAdvice接口2.4 MethodInterceptor接口1.Advice接口使用Advice是对附加方法(被代理的方法前后需要执行的)的描述。在Spring AOP中支持4中类型的通知:1:before advice 在方法执行前执行。2:after ...原创 2018-10-08 21:22:05 · 1116 阅读 · 0 评论 -
Spring AOP解析过程
Step 1初始化解析器 AspectJAutoProxyBeanDefinitionParserStep 2调用AspectJAutoProxyBeanDefinitionParser的parse函数注册AnnotationAwareAspectJAutoProxyCreator类代理生成器在解析配置文件时候Step 3由于AnnotationAwareAspectJAutoProxyCrea原创 2018-03-21 00:13:10 · 779 阅读 · 0 评论