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

网站模块分析中国建筑集团网

网站模块分析,中国建筑集团网,宁波网站建设开发公司,郑州今天出啥大事儿了JPA 的读写分离配置不能应用在 Mybatis 上, 所以 Mybatis 要单独处理 为了不影响原有代码, 使用了增加拦截器的方式, 在拦截器里根据 SQL 的 CRUD 来路由到不同的数据源 需要单独增加Mybatis的配置 Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) t…JPA 的读写分离配置不能应用在 Mybatis 上, 所以 Mybatis 要单独处理 为了不影响原有代码, 使用了增加拦截器的方式, 在拦截器里根据 SQL 的 CRUD 来路由到不同的数据源 需要单独增加Mybatis的配置 Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactory new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);// 注册插件sessionFactory.setPlugins(new Interceptor[]{new DataSourceInterceptor()});return sessionFactory.getObject();} 部署后发现没有生效, 打断点发现 SqlSessionFactoryBean 没有注册成功, 因为是老项目, 引入的包里已经有一个  Mybatis 的配置了, 我不能直接覆盖, 所以用 BeanPostProcessor 来在原有 SqlSessionFactoryBean 初始化时加入拦截器的配置 Bean ConditionalOnBean(nameroutingDataSource) public BeanPostProcessor sqlSessionFactoryBeanPostProcessor(Qualifier(routingDataSource) DataSource routingDataSource) {return new BeanPostProcessor() {Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if (bean instanceof SqlSessionFactory) {SqlSessionFactory SqlSessionFactory (SqlSessionFactory) bean;try {SqlSessionFactory.getConfiguration().addInterceptor(new DataSourceInterceptor());} catch (Exception e) {throw new RuntimeException(e);}}return bean;}} } 部署后发现还是未生效, 调试发现是引入的包里已经定义了一个默认的数据源,而且标注了Primary, 而原有 Mybatis 的配置里直接使用了这个数据源 于是使用了一个hack的方法, 使用反射在 Mybatis 配置 SqlSessionFactoryBean 初始化时, 把数据源重新设置成有主从配置的数据源 Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (bean instanceof SqlSessionFactory) {try {SqlSessionFactory sqlSessionFactory (SqlSessionFactory) bean;org.apache.ibatis.session.Configuration configuration sqlSessionFactory.getConfiguration();Field dataSourceField configuration.getEnvironment().getClass().getDeclaredField(dataSource);dataSourceField.setAccessible(true);dataSourceField.set(configuration.getEnvironment(), routingDataSource);} catch (Exception e) {throw new BeansException(Failed to modify SqlSessionFactory, e) {};}}return bean; } 再次部署测试通过
http://www.hkea.cn/news/14488743/

相关文章:

  • 建站网站怎么上传代码如何做好网站关键词布局
  • 用asp.net开发网站的优势代理小程序加盟
  • 药膳网站建设的目的wordpress社交游戏
  • 个人网站成品osx wordpress
  • wap网站软件做一个网站要注意什么
  • 越秀网站建设推广上海计算机一级网页制作
  • 网站如何宣传什么叫网落营销
  • 安徽建设厅网站网址华为认证网络工程师怎么考
  • 做网站每天任务及实训过程wordpress 原理
  • 站长工具综合权重查询网上商城网站建设解决方案
  • 网站开发的前端与后端淮南房地产网站建设网站
  • 做旅游地产的网站和公司潍坊中脉网站建设公司
  • 大兴专业网站开发公司湖南省造价管理站官网
  • 做网站怎么去工信部缴费挂机软件定制
  • 用html5做手机网站网站备案如何转移
  • 做网站网站的人是怎么被抓的社交网站开发技术岗
  • 建站一条龙邯郸个人网站建设
  • 婚纱影楼网站模板wordpress内存耗尽
  • 四川餐饮网站建设建筑行业网站有哪些
  • 网站 js 广告代码大全wordpress微软雅黑字体
  • 网站产品预算网页游戏排行榜人气
  • 上海松江网站建设公司中国网站排名查询
  • php网站前后台源代码dw建设网站如何加入音乐
  • 自动建站网站系统域名电商网站建设模型图
  • 四视图网站埃及网站后缀
  • 网站内容如何优化上海建站模板系统
  • python 做的网站有哪些最吸引人的营销广告文案
  • 做多个网站 买vps国企网站建设需要注意什么
  • 网站开发工程师证贵阳网站开发工程师招聘网
  • 成都网站建设交易wordpress s