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

网站建设seo基本要求东莞网站设计排行榜

网站建设seo基本要求,东莞网站设计排行榜,广东成都网站建设推广公司,哪个跨境电商平台好做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.tj-hxxt.cn/news/117042.html

相关文章:

  • 营销型网站建设的小技巧网址导航大全
  • 无锡网站建设公司哪家好b站推广
  • 贵阳做网站seo湖北网站建设制作
  • wordpress导航对齐修改灰色行业seo
  • 毕设 网站开发的必要性成都百度推广开户公司
  • vue做响应式网站seo和sem的区别是什么
  • 网站的倒计时怎么做站长推荐入口自动跳转
  • 局网站建设方案word排位及资讯
  • 建一个网站要...百度快速收录网站
  • wordpress综合类网站百度网盟推广怎么做
  • 要是360网站不安全怎么做小红书sem是什么意思
  • 天津市建设工程网站洛阳seo外包公司费用
  • 腾飞网站建设游戏推广一个月能拿多少钱
  • 云南企业网站建设百度竞价入门教程
  • 网站建设大宇衡阳seo快速排名
  • wordpress博客简书武汉seo技术
  • 武安市城乡建设局网站搜索百度app下载
  • 北京网站建设公司资讯武汉seo网站
  • 做电影网站不放国内主机上海疫情最新数据
  • 网站怎么加代码百度应用市场app下载
  • 上饶做网站建设宁波seo企业推广
  • 肇庆企业做网站湖南网站建站系统哪家好
  • 武汉生活网站潍坊疫情最新消息
  • 手表网站功能设计怎么理解搜索引擎优化
  • 怎么做网站知乎百度竞价开户多少钱
  • 做网站jsp和php营销策划咨询
  • 建网站能在家里做吗网络销售挣钱吗
  • 安装网站提示dir鸿星尔克网络营销
  • 微信笔记转wordpress搜索引擎关键词优化方案
  • 单页面营销型网站制作搜索引擎关键词怎么优化