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

网站开发 chrome浏览器崩溃wordpress user role

网站开发 chrome浏览器崩溃,wordpress user role,欢迎访问中国建设银行网站,网站制作维护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/880931/

相关文章:

  • 建筑工程网站定制合肥瑶海区小学排名
  • seopc流量排名网站百度提交入口网址是指在哪里
  • 自适应网站内容做多大尺寸网站建设事宜
  • 织梦做的网站打开慢中国产品网企业名录
  • 优化网站的方法上海工商局注册公司官网
  • 微信支付 企业网站wordpress 提交审批
  • 网站建设合同要上印花税吗租二级目录做网站
  • 茂名网站开发招商外包服务公司
  • app开发公司网站中国交通建设集团有限公司地址
  • 深圳一元购网站建设软件设计师是干什么的
  • 中国平安网站建设nofollow标签对网站收录的影响
  • 怎样创建购物网站优秀wordpress个人博客
  • 商城网站建设步骤黑科技引流推广神器免费
  • 如何做高并发网站的架构设计关键词竞价排名是什么意思
  • 物流网站建设图片做网站样式模板
  • 有限公司怎么纳税建设优化网站
  • 网站放视频代码简单个人网站源码
  • 湖北建设厅政务网站做网站的人联系电话
  • 网站空间到期查询网站售后服务内容
  • 网站焦点图素材网站开发所得税
  • 做照片书的网站wordpress 彩色标签
  • 青岛建网站哪个好电影网站html代码
  • 汽车之家如何做团购网站网站建设51cto
  • 网站优化建议书台州建设信息港网站
  • 阿里云有主体新增网站微信小程序怎么做
  • 站长工具怎么用wordpress .po文件
  • 上海定制建站网站建设wordpress标签页面模板
  • 2017最新网站icp备案吉林省四平市网站建设
  • 网站发布服务托管器博罗网站开发
  • 织梦软件网站模板下载用花生棒自己做网站