面向小白的SpringBoot的JpaRepositoryFactoryBean定义原理解析

387 阅读1分钟

这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战

上篇文章没有介绍完,这篇来写个补充,让大家全面的认识这个加载过程,废话不多说,我们马上开始吧。

JpaRepositoriesRegistra

@Import(JpaRepositoriesRegistrar.class),这个顶上还有一个注解,这个是激活这个注解的,我们点进去看下。

image.png

这个类的类图如下,稍后我们就提到。 image.png

这里指定了注解的类型 image.png

这里获取一个扩展,用来限定FactoryBean是JpaRepositoryFactoryBean

image.png

接着我们看他的父类

RepositoryBeanDefinitionRegistrarSupport

public abstract class RepositoryBeanDefinitionRegistrarSupport 这里面有个注册Bean定义的方法,这里的扩展就是调用之前提到的代码:

image.png

往下走,看到注册方法,点进去 image.png

我们可以看到它这里定义了一个builder

image.png

之后我们往下走,它开启了个计时,然后从包里把所有的Repositoriy接口取出来,一个一个定义。

image.png

我们点进这个方法看下,我们可以看到这个里面取了我们这个Bean的名字进行了一些属性设置:

image.png

添加了非常多的属性: image.png

之后是根据这个build,生成了一个Bean名称,设置了一些属性,然后把它添加到definitions里面,就完成了全部操作。

image.png

这个Bean定义的方法都是这个接口提供的,这个就和我们前面提到的类图联系起来了。 image.png

当然和昨天的也能联系起来了,之后通过JpaRepositoryFactoryBean的 afterPropertiesSet()方法来创建Repository Bean。

是不是很简单,这回知道为啥你一个注解就都生效了吧,我们只需要知道那个注解就行了。