Spring
little_wear
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SpringAop具体流程
BeanFactoryAspectJAdvisorsBuilder:用于从BeanFactory检索@AspectJ bean并基于它们构建Spring Advisor的帮助程序,以与自动代理一起使用。buildAspectJAdvisors:在当前的bean工厂中查找带有Aspect注释的aspect bean,然后返回代表它们的Spring AOP Advisor列表。先获取到aspectBeanNames,如果为空,则去寻找带有@Aspect注解的bean。寻找到带@Aspect的bea..原创 2020-10-06 16:28:02 · 308 阅读 · 0 评论 -
Spring之ApplicationContext#refresh启动全部流程
1:prepareRefresh主要是做一些环境上的准备。清理scanner的缓存。把容器状态切换为active。在上下文环境中初始化任何占位符属性源。验证标记为所需的所有属性是否可解析。存储预刷新ApplicationListeners。Allow for the collection of early ApplicationEvents。2:obtainFreshBeanFactory告诉子类刷新内部bean工厂,主要是设置了serializationId=“allicati原创 2020-10-05 19:39:02 · 673 阅读 · 0 评论 -
Spring AOP的@Pointcut与@DeclareParents
@Aspect:将此类标记为一个Advisor。@EnableAspectJAutoProxy ** 表示若spring创建的对象如果实现了接口,默认使用jdk动态代理,如果没有实现接口,使用cglib创建代理对象。@EnableAspectJAutoProxy(proxyTargetClass = true)将只使用cglib。SpringBoot默认会配置EnableAspectJAutoProxy,可以通过spring.aop.prox-target-class设置proxyTargetClass.原创 2020-09-01 13:22:52 · 273 阅读 · 0 评论 -
7分钟看懂Spring Bean创建过程中的循环依赖的解决
Bean创建过程中的循环依赖的解决准备2个互相依赖的类。外加一个容器。调用AbstractBeanFactory中的doGetBean,执行到getSingleton(beanName)方法,发现没有获取到。 getSingleton方法如下:调用AbstractBeanFactory中的doGetBean,执行到getSingleton(beanName,ObjectFactory)方法,进行implA的创建。进入了DeafultSingletonBeanRegis原创 2020-08-31 23:17:10 · 279 阅读 · 0 评论 -
Spring中普通的Bean的创建过程,生命周期。
bean生命周期BeanFactory,不会马上初始化BeanApplicationContext,会马上初始化Bean,具体和**AbstractApplicationContext的refresh()**方法有关实例化bean设置对象属性检查有没有实现Aware相关接口,然后设置相关依赖postProcessBeforeInitialization//前处理InitializationBean//需要实现接口InitializingBeaninit-method //可以用注原创 2020-08-11 17:21:35 · 163 阅读 · 0 评论 -
Spring Bean解决循环依赖
循环依赖解决:三级缓存位置是在DefaultSingletonBeanRegistry这个类里的getSingleton里 //三级缓存 /** 准备好了的单列bean */ private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256); /** 根据BeanDefinition实例化bean的工厂*/ private final Map<Strin原创 2020-08-11 16:50:51 · 143 阅读 · 0 评论
分享