![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
我不是攻城狮
越努力越幸运
展开
-
BeanFactory、FactroyBean、ApplicationContext
定制的工厂Bean,可以通过抽象工厂方式创建的bean,不纳入spring的生命周期、依赖、注入特性,相当于spring给第三方的一个扩展,比如dubbo的@DubboReference,ReferenceBean交给dubbo ioc自己管理。实现BeanFactory接口,全局上下文,非spring自动注入但加入spring管理的bean,刷新生命周期的时候调用的工厂直接就是ApplicationContext,通过ApplicationContext一样可以刷新容器。原创 2024-05-26 18:03:49 · 182 阅读 · 0 评论 -
spring自定义初始化的加载顺序
构造函数>@PostConstruct > afterPropertiesSet > init-method。原创 2024-05-26 17:41:15 · 455 阅读 · 0 评论 -
@Service 、@Component、@Repository
xxxx。原创 2024-05-26 17:37:27 · 319 阅读 · 0 评论 -
spring refresh
负责spring ioc、proxy 、aop 、init、event的整合。原创 2024-05-26 13:38:24 · 353 阅读 · 0 评论 -
spring注入方式
原创 2024-05-25 14:38:23 · 308 阅读 · 0 评论 -
AutowiredAnnotationBeanPostProcessor处理器
/这里会刷新DefaultListableBeanFactory ,DefaultListableBeanFactory 是 AbstractAutowireCapableBeanFactory 的子类,AbstractAutowireCapableBeanFactory 就是spring IOC容器。AutowiredAnnotationBeanPostProcessor处理器,核心方法postProcessPropertyValues,提供@Autowired类和方法级别的注入。原创 2023-11-23 15:25:34 · 380 阅读 · 0 评论 -
spring启动
原创 2023-04-13 17:06:45 · 375 阅读 · 0 评论 -
AbstractAutowireCapableBeanFactory(springbean生命周期)
1、加载BeanFactory会初始化org.springframework.beans.factory.support.DefaultListableBeanFactory继承了AbstractAutowireCapableBeanFactory,这个父类就是生命周期的核心,实例化、初始化、前后增强以及销毁Bean,覆盖了整个生命周期。7、注册销毁的Bean,如果是单例,通过DestructionAwareBeanPostProcessors来销毁bean,如果不是单例,则使用回调来销毁bean。原创 2023-11-17 19:56:29 · 252 阅读 · 0 评论 -
spring三级缓存--循环依赖
4、BBean完成了ABean的依赖注入(ABean就是个半成品,初始化了工厂缓存,实例化但没有赋值),证明BBean初始化完成,BBean放入到一级缓存。3、BBean发现在ABean在三级缓存中刚好有,利用工厂缓存完成ABean的创建(ABean实例化完成但未赋值),存入二级缓存,删除三级缓存。1、当ABean实例化完成后,加入三级缓存,进入ABean初始化阶段,发现依赖BBean。2、当BBean实例化完成后,加入三级缓存,进入BBean初始化阶段,发现依赖ABean。二级缓存就可以解决循环依赖了,原创 2023-04-13 17:09:13 · 304 阅读 · 0 评论 -
aop(spring 和 springboot)
springaop源码级别解析原创 2022-12-28 17:51:43 · 425 阅读 · 1 评论 -
spring过滤器vs拦截器vsAop
执行顺序Filter(过滤器):依赖于Servlet容器,不依赖框架,利用Java的回调机制实现;几乎可以对所有的请求响应做出过滤。可做编码设置和鉴权操作。Interceptor拦截器:不依赖Servlet容器,依赖于web框架(springmvc的拦截器),利用java反射机制实现的;只拦截基于action结尾的(Controller层切面)请求前(preHandler)、请求中...原创 2020-03-09 18:04:13 · 181 阅读 · 0 评论 -
springboot/spring事务
使用spring proxy和aop来执行事务,发生在finishBeanFactoryInitialization阶段。ProxyTransactionManagementConfiguration:提供aop能力,解析事务注解。AutoProxyRegistrar:提供proxy;将事务注解转化为BD。2-1、执行前置增强(根据事务传播机制来实现事务的开启提交回滚)2-2、执行后置增强(根据事务传播机制来实现事务的开启提交回滚)2-3、实现事务的开启提交回滚(aop)springboot启动。原创 2020-03-09 17:25:31 · 313 阅读 · 1 评论 -
@Transaction失效的场景
1、@Transaction用在类内部调用方法、内部类方法调用、final方法、static方法、非public方法上全部失效。原因:@Transaction使用spring proxy aop机制完成事务管理的,该机制不支持,所以事务失效。原因:@Transaction的事务上下文是ThreadLocal修饰的,新的线程操作不会被包含在原来的事务中。3、@Transaction修饰的方法里调用了捕获异常的机制(try catch机制)2、多线程使用@Transaction也会失效的。原创 2019-11-27 15:43:21 · 2081 阅读 · 1 评论 -
springboot/spring事务传播机制
spring事务传播机制原创 2019-11-22 10:23:21 · 443 阅读 · 1 评论 -
spring proxy(AbstractAutoProxyCreator)
1、静态代理方式,需要自己撰写代码,编译运行使用字节码增强技术来实现代理。推荐aspectJ。2、动态代理则需要在运行期间利用反射创建代理类的同时还要完成调用过程,jdk和cglib。原创 2019-11-16 16:12:53 · 336 阅读 · 0 评论