Spring
国林哥
电子科技大学EMBA,西南大学通信工程本科,供职于初灵信息(创业板上市公司),曾在IBM、中软国际任职,资深敏捷教练,PMP,信息系统项目管理师,华为HCIP,曾负责华为100+人研发团队,中软国际明星PM。
展开
-
Spring | 声明式事务
声明式事务介绍如下图所示,主要涉及@Transaction注解与AOP面向切面编程,调用TransactionInterceptor: 声明式事务处理代码如下: 其中涉及较多传播特性,这里举例如下:原创 2022-01-26 00:16:28 · 150 阅读 · 0 评论 -
Spring | AOP的底层实现原理
AOP是IOC整个过程中的一个扩展点。在after方法中包含对AOP的相关代码细节: Jdk和cglib是抛开Spring框架外,自己的创建流程,与Spring框架独立: 其中相关代码细节如下所示,以下是add方法的具体细节: 可以看到add方法中涉及var1000及intercept方法: 其中有var1数组: 在CglibAopProxy类中的DynamicAdviseInterceptor方法中, 代码细节如下: 我们采用TestAop类作为例子,打断点测原创 2022-01-26 00:08:52 · 1623 阅读 · 0 评论 -
Spring | Bean的生命周期是单线程还是多线程的?
Spring源码中,Bean的生命周期是单线程还是多线程的? 我们可以从以下步骤验证,在AbstractApplicationContext中,依次按以下过程查看源码: 在preInstantiateSingletons中,有详细实现代码细节,我们并没有看到有关多线程的处理逻辑: 以上就是bean对象的具体创建过程,其中并没有对多线程的处理过程,因此bean对象创建时单线程的。 ...原创 2022-01-25 23:38:38 · 1396 阅读 · 4 评论 -
Spring | 深入理解Bean的生命周期
Spring中Bean的生命周期原创 2022-01-25 23:34:19 · 3232 阅读 · 4 评论 -
Spring | 如何自定义属于自己的BFPP(BeanFactoryPostProcessor)?
看过Spring源码的,哪个是最重要的方法:AbstractApplicationContext类中的refresh方法。 其中包含的13个方法非常重要。 我们浏览其中的代码,可以看到prepareBeanFactory(beanFactory)是beanFactory的准备工作,其实现对各种属性进行填充。 比如:${jdbc.username}这些变量: 继续查看代码,其通过invokeBeanFactoryPostProcessors(beanFactory)调用各种beanFact原创 2022-01-23 23:21:23 · 1141 阅读 · 2 评论 -
Spring | Bean对象中的${jdbc.url} 是在哪里被替换的?
在XML解析文件中,我们经常用到类似如下bean对象的定义: <bean id=dataSource class=com.alibaba.druid.pool.DruidDataSource> <property name=“url” value=“${jdbc.url}”></property> …. </bean> 我们很多人有个疑问,即“${jdbc.url}” 是在哪里被替换的? PostProcessor 即后置处理增强器,其包括Bean原创 2022-01-23 22:49:58 · 574 阅读 · 0 评论 -
Spring框架是如何知道需要创建哪些Bean对象的?
我们在学习Spring源码时,知道两大关键内容,即IOC(控制反转)和AOP(面向切面编程), 而Spring将各种对象通过Bean解析,今天我们首先理解下Spring框架如何知道需要创建哪些Bean对象的? Bean对象的定义信息举例来说如下,通过context.getBean(args)获取: 如何理解Spring呢?他是一个框架,是一个容器,但最重要的,他是一个生态,是整个生态的基石。 Spring框架是如何知道需要创建哪些Bean对象的? 通过XML配置文件或注解等形式。 XML文件原创 2022-01-23 22:21:46 · 459 阅读 · 0 评论