当前位置: 首页 > news >正文

怎么做软文代发平台网站用易语言做网站

怎么做软文代发平台网站,用易语言做网站,广西城乡建设厅网站首,提供手机网站怎么做大家好#xff0c;我是柳岸花开。今天我们要讲的是 Spring 整合 MyBatis 的底层源码解析。希望大家能更深入理解 Spring 和 MyBatis 的整合原理#xff0c;并应用到实际项目中。 由很多框架都需要和Spring进行整合#xff0c;而整合的核心思想就是把其他框架所产生的对象放到… 大家好我是柳岸花开。今天我们要讲的是 Spring 整合 MyBatis 的底层源码解析。希望大家能更深入理解 Spring 和 MyBatis 的整合原理并应用到实际项目中。 由很多框架都需要和Spring进行整合而整合的核心思想就是把其他框架所产生的对象放到Spring容器中让其成为Bean。 ​ Mybatis框架可以单独使用而单独使用Mybatis框架就需要用到Mybatis所提供的一些类构造出对应的对象然后使用该对象就能使用到Mybatis框架给我们提供的功能和Mybatis整合Spring就是为了将这些对象放入Spring容器中成为Bean只要成为了Bean在我们的Spring项目中就能很方便的使用这些对象了也就能很方便的使用Mybatis框架所提供的功能了。 一、Spring 和 MyBatis 简介 Spring 一个开源框架提供全面的基础设施支持简化 Java 开发特别是在企业级开发中。 核心是控制反转IoC和面向切面编程AOP。 MyBatis 优秀的持久层框架支持自定义 SQL、存储过程及高级映射。 避免了大部分 JDBC 代码和手动设置参数及获取结果集的麻烦。 Mybatis-Spring底层源码执行流程 通过MapperScan导入了MapperScannerRegistrar类 MapperScannerRegistrar类实现了ImportBeanDefinitionRegistrar接口所以Spring在启动时会调用MapperScannerRegistrar类中的registerBeanDefinitions方法 在registerBeanDefinitions方法中注册一个MapperScannerConfigurer类型的BeanDefinition 而MapperScannerConfigurer实现了BeanDefinitionRegistryPostProcessor接口所以Spring在启动过程中时会调用它的postProcessBeanDefinitionRegistry()方法 在postProcessBeanDefinitionRegistry方法中会生成一个ClassPathMapperScanner对象然后进行扫描 设置ClassPathMapperScanner对象可以扫描到接口因为在Spring中是不会扫描接口的 同时因为ClassPathMapperScanner中重写了isCandidateComponent方法导致isCandidateComponent只会认为接口是备选者Component 通过利用Spring的扫描后会把接口扫描出来并且得到对应的BeanDefinition 接下来把扫描得到的BeanDefinition进行修改把BeanClass修改为MapperFactoryBean把AutowireMode修改为byType 扫描完成后Spring就会基于BeanDefinition去创建Bean了相当于每个Mapper对应一个FactoryBean 在MapperFactoryBean中的getObject方法中调用了getSqlSession()去得到一个sqlSession对象然后根据对应的Mapper接口生成一个Mapper接口代理对象这个代理对象就成为Spring容器中的Bean sqlSession对象是Mybatis中的一个sqlSession对象需要SqlSessionFactory来产生 MapperFactoryBean的AutowireMode为byType所以Spring会自动调用set方法有两个set方法一个setSqlSessionFactory一个setSqlSessionTemplate而这两个方法执行的前提是根据方法参数类型能找到对应的bean所以Spring容器中要存在SqlSessionFactory类型的bean或者SqlSessionTemplate类型的bean。 如果你定义的是一个SqlSessionFactory类型的bean那么最终也会被包装为一个SqlSessionTemplate对象并且赋值给sqlSession属性 而在SqlSessionTemplate类中就存在一个getMapper方法这个方法中就产生一个Mapper接口代理对象 到时候当执行该代理对象的某个方法时就会进入到Mybatis框架的底层执行流程。 Spring整合Mybatis后一级缓存失效问题 Mybatis中的一级缓存是基于SqlSession来实现的所以在执行同一个sql时如果使用的是同一个SqlSession对象那么就能利用到一级缓存提高sql的执行效率。 ​ 在Spring整合Mybatis后如果执行某个方法时该方法上没有加Transactional注解也就是没有开启Spring事务那么后面在执行具体sql时每执行一个sql时都会新生成一个SqlSession对象来执行该sql这就是我们说的一级缓存失效也就是没有使用同一个SqlSession对象而如果开启了Spring事务那么该Spring事务中的多个sql在执行时会使用同一个SqlSession对象从而一级缓存生效。 ​ Spring整合Mybatis后一级缓存失效并不是问题是正常的实现因为一个方法如果没有开启Spring事务那么在执行sql时候那就是每个sql单独一个事务来执行也就是单独一个SqlSession对象来执行该sql如果开启了Spring事务那就是多个sql属于同一个事务那自然就应该用一个SqlSession来执行这多个sql。所以在没有开启Spring事务的时候SqlSession的一级缓存并不是失效了而是存在的生命周期太短了执行完一个sql后就被销毁了下一个sql执行时又是一个新的SqlSession了。 总结 今天我们深入解析了 Spring 和 MyBatis 整合的核心组件及其底层实现原理。希望大家通过这次课程能够对 Spring 和 MyBatis 有更深入的理解并能在实际项目中灵活运用。 关注我下期了解 Spring AOP底层源码解析 回复 222获取Java面试题合集 关于我 一枚爱折腾的Java程序猿专注Spring干货。把路上的问题记录下来帮助那些和我一样的人。 好奇心强喜欢并深入研究古天文。 崇尚 个人系统创建做一些时间越长越有价值的事情。思考 把时间留下来 又 每刻都是新的。
http://www.hkea.cn/news/14293448/

相关文章:

  • 网站推广工作总结wordpress iis rewrite
  • 校园二级网站建设好听的公司名字大全
  • 网站购买平台修改wordpress主页标题
  • 医院做网站备案都需要什么网站不备案什么意思
  • sendcloud wordpress太原新站优化
  • 建设直播网站软件网站备案是什么
  • dz系统怎么做地方网站提高网站关键词排名
  • 东莞建设网站软件赣州市微语网络科技有限公司
  • 网站建设排行公司网站全网推广好还是做58精准好
  • 性价比最高网站建设价格诸城建设局网站
  • 女人与黑狗做视频网站门户网站建设哪专业
  • 合肥网站优化软件全国分类信息网站排名
  • 商务网站的分类关键词优化心得
  • 上海自聊自做网站鄂州手机网站设计
  • 网站开发学习路线株洲公司做网站
  • 桓台网站设计卡盟网站模板
  • 深圳网站制作公司兴田德润官方网站家政公司电话
  • 网站设计公司电话人才招聘网最新招聘2022
  • 营销网站制作免费咨询wordpress 百度 tag
  • 会计是做什么的大连网站优化
  • 重庆市建设工程信息官方网站官方网站案例
  • 有谁做过网站建设网站建设简介电话
  • 外贸营销网站制作公司怎么做影视网站
  • 为什么用dw做的网站打不开淘宝客合伙人网站建设
  • 如何加强网站管理的队伍建设阿里云搭建网站教程
  • 成都大型的做网站的公司互联网网站建设制作
  • 常州网站制作优化wordpress百度云链接地址
  • 网站托管流程品牌建设的工作
  • 网站开发者的常用工具西安网址
  • 那家建设网站p2p公司最好?网站开发后端最新技术