当前位置: 首页 > 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.yayakq.cn/news/260265/

相关文章:

  • 网站怎么做充值提现功能为什么搜索不到刚做的网站
  • 怎样给网站找空间做备案建设银联官方网站
  • 怎么网上接网站开发单自己做wordpress 百秀主题
  • 杭州省建设厅网站第三方网站建设
  • 深圳做网站补贴seo 首页
  • 信阳市网站建设wordpress slider插件下载
  • 网站订单系统模板网站视频提取软件app
  • 网站升级维护需要多久软件项目管理平台
  • 万网建设网站网站页面设计怎么收费
  • wordpress 建站 电子书兰州新站点seo代理
  • 有哪些做相册视频剪辑的网站网络公司给销售公司做网站
  • 厦门网站建设小程序开发小饭店普通装修
  • 网站可以只做移动端吗富阳网站建设推广
  • 做防护用品的网站湖南微信管理系统
  • 网站关键字标签软件开发工具与平台
  • 租房网站开发线上销售渠道有哪几种
  • 织梦dedecms网站内容页友情链接做自己的网站
  • 做网站改版的深圳保障性住房查询网
  • wordpress站点统计com域名是哪个国家的
  • 篮球网站设计互联网行业网站建设
  • 自动化毕设题目网站开发wordpress 文章折叠
  • 网站建设的四大步骤wordpress 页面标题
  • 阳山县网站住房和建设局深圳上位机软件开发培训
  • 网站建设哪个部门管理除了阿里巴巴还有什么网站做外贸的
  • 外贸网站平台下载wordpress程序插件
  • 河西集团网站建设南京网站建设中企动力
  • 帮助做APP的网站公司大连开发区网页制作
  • 海珠建网站的公司深圳网站建设有限公司 2019
  • 江西赣州网站网站上的公告怎么做参考文献
  • 企业门户网站开发代码四川网站建设开发