jpa代理Repository原理

更新时间:2023-05-04 16:35:30 阅读: 评论:0

jpa代理Repository桂附地黄丸的作用与功效 原理
刚接触jpa的时候,我就被他惊艳了,⼼想 还写什么sql啊!!”、“还⽤什么mybatis啊”、”还建什么表啊!
我们写Repository 普遍继承⼀个JpaRepository接⼝,⽽⽤的时候直接注⼊就⾏了,这么⽞学的吗?
原来JpaRepository接⼝只是它的外壳,其真正实现类是simplejpaReository ,
{$Proxy} 说明启动了代理
有注⼊ioc容器,我们来断⼀下ConfigurationClassBeanDefinitionReader.loadBeanDefinitions() ⽅法
扫描所以需要配置的类了
但是 没有发现我们⾃⼰Repository, 因为spring qq被冻结了怎么样才可以解冻 扫描有⼀定规则,⽐如扫描 @Compo,@Controller,等注解的
说明他是通过Jpa某个类 来处理的,这⾥我停滞了⼀段时间来搜索相关的信息,
发现ImportBeanDefinitionRegistrar接⼝ 可以动态注⼊Bean
发现
RepositoryConfigurationSourceSupport implements BeanFactoryAware, ImportBeanDefinitionRegistrar, ResourceLoaderAware, EnvironmentAware
JpaRepositoriesAutoConfigureRegistrar extends RepositoryConfigurat创新的意义 ionSourceSupport
加断点 看看
发现了新⼤陆
RepositoryBeanDefinitionBuilder builder =new RepositoryBeanDefinitionBuilder(registry, extensio大班随笔 n, resourceLoader,environment);动态注册器
扫描Repository
具体扫描
新建扫描器,并加⼊过滤器 扫描所继承Repository接⼝ 并不是Jparepository哦  有的Repository @NoRepositoryBean注解 并不注⼊返回到上⾯
扫描完成后,以我们的类名为Beanname,BeanDefinition为JpaRepositoryFactoryBean
JpaRepositoryFactoryBean关系图
发现实现了InitializingBean接⼝,忍住激动继续⾛
Spring 中AbstractAutowireCapableBeanFactory类中的invokeInitMethods 调⽤我们的afterPropertiesSet() 来初始化Bean
判断是否实现了InitializingBean
设置代理
Object target = getTargetreal崔雪莉 Repository(information); 通过获取SimpleJpaRepository  我们可以重写这个⽅法 来获得⾃定义的类
result.addAdvice 来实现我们⾃定义的⽅法的
总结:
spring boot @EnableAutoConfiguration 扫描 spring.factories⽂件 JpaRepositoriesAutoConfiguration 这Jpa的配置类
IOC容器再过 ImportBeanDefinitionRegistrars() 获取JpaRepositoriesAutoConfigureRegistrar  再注册我们⾃⼰⾃定义的Repository
以我们的类名为Beanname,BeanDefinition为JpaRepositoryFactoryBean
然后 对Bean进⼀步处理 after梦见很多蛆 PropertiesSet()  设置代理 处理⾃定义⽅法
篇幅原因,就分析到这了吧
未经本⼈同意 不能转载

本文发布于:2023-05-04 16:35:30,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/525272.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:扫描   代理   实现   定义
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图