当前位置: 首页 > 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(name="routingDataSource")
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.ritt.cn/news/17642.html

相关文章:

  • 哪个企业做网站seo网站排名优化软件是什么
  • 石龙仿做网站网络营销推广技术
  • wordpress 网站平面设计网站
  • 最专业网站建设公郑州seo顾问外包
  • seo网站管理招聘竞价账户托管的公司有哪些
  • 政务网站建设管理的论文网络营销策划ppt范例
  • 在门户网站做推广福州百度seo排名
  • 网站上传安装百度首页百度
  • wordpress免费企业主题网站模板杭州seo公司排名
  • 长沙网站建设开发h5页面制作平台
  • 正能量软件不良网站下载手机如何制作一个网页链接
  • 苏州好的做网站的公司有哪些app推广赚钱平台
  • 珠海做网站推广公司推广方案应该有哪些方面
  • 微信音乐做mp3下载网站网络营销技巧和营销方法
  • 网络营销章节测试答案网络优化工程师骗局
  • 泰安企业网站seo昆明网站seo优化
  • 怎么做二级域名网站搜索引擎大全排行榜
  • 网站建设方案-奢侈品seo优化教程视频
  • 大学交作业wordpress广东seo快速排名
  • 天津自动网站建设调试今日热点新闻头条国内
  • 浙江标力建设集团网站开车搜索关键词
  • 潼关县住房和城乡建设局网站seo是做什么工作的
  • 网站后台改互联网营销师证书怎么考多少钱
  • 佛山网站建设与设计公司爱站长尾词挖掘工具
  • 国家水资源监控能力建设网站seo 优化顾问
  • 景德镇建设局网站成都网络推广运营公司
  • 做物流网站的公司哪家好seo智能优化
  • 成都装修网需要优化的网站有哪些
  • WordPress 左边导航seo问答
  • 制作网站的心得体会营销型网站建设公司价格