
Spring源码
文章平均质量分 88
白鸽呀
这个作者很懒,什么都没留下…
展开
-
Spring源码剖析之@Transactional
准备我们知道使用@Transactional,要满足以下条件1、配置数据源 DataSource2、配置事务管理器 PlatformTransactionManager3、配置类上标识 @EnableTransactionManagement@Configuration@PropertySource(value = {"classpath:jdbc.properties"},encoding = "UTF-8")public class TransactionalConfig {原创 2022-01-10 12:30:05 · 506 阅读 · 0 评论 -
Spring源码分析之AOP拦截器调用流程
Spring AOP 拦截器调用流程1、代理对象调用invoke方法@Override @Nullable public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object oldProxy = null; boolean setProxyContext = false; /** * 【1】获取代理工厂 */ TargetSource targetSour原创 2022-01-07 17:32:12 · 753 阅读 · 0 评论 -
Spring源码剖析之AOP代理对象创建
准备我们通过AOP实现日志记录来剖析AOP/** * 日志切面 * * 实现日志记录 */@Aspect@Componentpublic class LogAspect { public LogAspect(){ System.out.println("LogAspect 构造方法"); } /** * 将指定注解作为切入点 */ @Pointcut("@annotation(com.xiaoxu.annotatio原创 2022-01-07 17:30:59 · 666 阅读 · 0 评论 -
Spring源码剖析之循环依赖
什么是循环依赖循环依赖其实就是循环引用,两个或两个以上的Bean相互依赖,相互引用,例如A依赖B,B依赖于A,如果不加以处理,Bean A,Bean B 都无法创建成功。因为创建A的时候发现依赖B,于是去创建B,创建B的时候依赖A,这样整个SpringBean创建周期无法完成。Spring中循环依赖的场景依赖注入方式构造器注入导致循环依赖set注入注解注入构造器注入导致的循环依赖,无法被解决,因为创建A需要对象B,B又需要A,连基本的反射创建对象都创建不了。实际上就是Bean B ,Bea原创 2022-01-06 20:27:22 · 599 阅读 · 0 评论 -
Spring源码剖析之Bean创建流程
准备注意: spring中,Bean分为两种,一种Bean,一种FactoryBean。本质上没什么区别都是往IOC容器中注册Bean。但是形式上有区别,前者往IOC容器中注册了一个对象,后者为两个且后者FactoryBean主要用户创建复杂对象,例如SqlSessionFactoryBean,创建之前需要进行大量的XML解析而Bean由于创建的流程,又分为SpringBean和普通Bean。IOC容器一级缓存池中存放的是SpringBean,只是简单通过反射创建的称之为普通Beanrefresh方原创 2022-01-05 16:43:28 · 648 阅读 · 0 评论 -
Spring源码剖析之@Configuration核心配置类解析
ConfigurationClassPostProcessor 解析 @Configuration原创 2022-01-05 10:05:52 · 435 阅读 · 0 评论 -
Spring源码剖析之IOC容器创建流程
ApplicationContextConfiguration为核心配置类 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ApplicationContextConfiguration.class);1、this(), 实例化IOC容器,定义BeanDefinition读取器,读取注解定义的Bean。定义类路径下的BeanDefinition扫描器,扫描定义的原创 2022-01-04 16:50:30 · 1748 阅读 · 0 评论 -
Spring BeanPostProcessor理解和使用原理分析
基础如果使用过Spring,写过项目,那么一定了解IOC容器,Bean校验,@Autowired依赖注入这些,其实内部很多实现,都是通过BeanPostProcessor来实现BeanPostProcessor 作用:初始化Bean前后做一些赋值,解析处理相关操作BeanPostProcessor接口public interface BeanPostProcessor { /** * @param bean the new bean instance * @param beanName原创 2021-08-08 20:44:14 · 344 阅读 · 0 评论 -
Spring中Bean init方法和destroy方法三种实现方式和执行时机原理分析
1、InitializingBean和DisposableBean来管理bean的生命周期InitializingBean 接口DisposableBean有上图可知,实现init和destroy方法,我们只需要实现上面两个接口Car类public class Car implements InitializingBean , DisposableBean { public Car(){ System.out.println(" car construct ..原创 2021-08-08 16:46:53 · 4428 阅读 · 1 评论 -
Spring中@Import注解源码分析
基础知识我们知道@Import注解是向容器中导入bean的。@Import的注解主要作用于类上,往往搭配@Configuration,ImportSelector接口,还有ImportBeanDefinitionRegistrar往IOC容器中放入bean@Import导入bean的三种方式1、class数组的方式2、ImportSelector接口的方式,即批量导入(源码解析)3、ImportBeanDefinitionRegistrar接口方式,即手工注册bean到容器中class数组方原创 2021-08-08 12:15:07 · 425 阅读 · 0 评论