![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
国林哥
电子科技大学EMBA,西南大学通信工程本科,供职于初灵信息(创业板上市公司),曾在IBM、中软国际任职,资深敏捷教练,PMP,信息系统项目管理师,华为HCIP,曾负责华为100+人研发团队,中软国际明星PM。
展开
-
Spring | 声明式事务
声明式事务介绍如下图所示,主要涉及@Transaction注解与AOP面向切面编程,调用TransactionInterceptor: 声明式事务处理代码如下:其中涉及较多传播特性,这里举例如下:原创 2022-01-26 00:16:28 · 121 阅读 · 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 · 1556 阅读 · 0 评论 -
Spring | Bean的生命周期是单线程还是多线程的?
Spring源码中,Bean的生命周期是单线程还是多线程的?我们可以从以下步骤验证,在AbstractApplicationContext中,依次按以下过程查看源码:在preInstantiateSingletons中,有详细实现代码细节,我们并没有看到有关多线程的处理逻辑:以上就是bean对象的具体创建过程,其中并没有对多线程的处理过程,因此bean对象创建时单线程的。...原创 2022-01-25 23:38:38 · 1270 阅读 · 4 评论 -
Spring | 深入理解Bean的生命周期
Spring中Bean的生命周期原创 2022-01-25 23:34:19 · 3094 阅读 · 4 评论 -
Spring | 如何自定义属于自己的BFPP(BeanFactoryPostProcessor)?
看过Spring源码的,哪个是最重要的方法:AbstractApplicationContext类中的refresh方法。其中包含的13个方法非常重要。我们浏览其中的代码,可以看到prepareBeanFactory(beanFactory)是beanFactory的准备工作,其实现对各种属性进行填充。比如:${jdbc.username}这些变量:继续查看代码,其通过invokeBeanFactoryPostProcessors(beanFactory)调用各种beanFact原创 2022-01-23 23:21:23 · 1106 阅读 · 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 · 518 阅读 · 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 · 410 阅读 · 0 评论