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

网站维护和建设工作范围seo的工作内容

网站维护和建设工作范围,seo的工作内容,福州专业网站建设网络公司,犀牛云网站建设JPA 的读写分离配置不能应用在 Mybatis 上, 所以 Mybatis 要单独处理 为了不影响原有代码, 使用了增加拦截器的方式, 在拦截器里根据 SQL 的 CRUD 来路由到不同的数据源 需要单独增加Mybatis的配置 Configuration public class MyBatisConfig {Beanpublic SqlSessionFactory…

JPA 的读写分离配置不能应用在 Mybatis 上, 所以 Mybatis 要单独处理

为了不影响原有代码, 使用了增加拦截器的方式, 在拦截器里根据 SQL 的 CRUD 来路由到不同的数据源

需要单独增加Mybatis的配置

@Configuration
public class MyBatisConfig {@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 初始化时加入拦截器的配置

@Configuration
public class MyBatisConfig {@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 初始化时, 把数据源重新设置成有主从配置的数据源

@Configuration
public class MyBatisConfig {@Bean@ConditionalOnBean(name="routingDataSource")public BeanPostProcessor sqlSessionFactoryBeanPostProcessor(@Qualifier("routingDataSource") DataSource routingDataSource) {return new BeanPostProcessor() {
@Overridepublic 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.dtcms.com/wzjs/142528.html

相关文章:

  • 北京模板网站建设费用seopc流量排名官网
  • 做教程网站资源放哪里有河北电子商务seo
  • 建设营销型网站模板网站综合排名信息查询
  • 花卉网站开发可行性it培训课程
  • 弄个本科学历需要多少钱百度推广和优化有什么区别
  • 两人合伙做网站但不准备开公司中国时事新闻网
  • 建设投资平台网站奶茶店推广软文500字
  • 网站建设潮州优化 seo
  • 网站建设 软件开发重庆的seo服务公司
  • 做网站挂靠服务器什么好今日新闻摘抄50字
  • 网站升级改版的目的网站点击率查询
  • wordpress怎么改导航栏网站推广seo
  • 装修网站模板公司企业网站建设方案
  • 学做会计账的网站神马seo服务
  • 做宣传语的网站如何在google上免费推广
  • 周口网站建设费用自媒体人专用网站
  • 网站运营专员做什么重庆森林经典台词 凤梨罐头
  • 哪建设网站好正规接单赚佣金的app
  • 菏泽手机网站建设全球网站排名
  • 响应式 购物网站模板如何在百度上推广业务
  • jsp网站开发总结推广软文代发
  • 设计经典网站北京优化网站推广
  • 一般网站用什么做的安卓内核级优化神器
  • 罗岗网站建设公司给我免费播放片高清在线观看
  • 班级网站源代码网站建设优化400报价
  • 一个人在家做网站建设google安卓版下载
  • 海棠网站是什么意思福州网络营销推广公司
  • 时时彩网站怎么做免费开店的电商平台
  • 跑步机网站建设思维导图搜索引擎推广的三种方式
  • 做网站fjfzwl竞价推广价格