脚一你了踢便顺‭

脚一你了踢便顺‭ 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

脚一你了踢便顺‭ 回答了问题 · 今天 08:52

关于 API 的一个问题,不知道是我的想法错了,还是服务端的想法错了?

你们那接口仔是和本山大叔混的吧,这么会忽悠,几百条数据前端还能自己处理,你要是数据量多,还能前端处理嘛 - -

关注 6 回答 6

脚一你了踢便顺‭ 回答了问题 · 1月26日

Android OKHttp 获取服务器的 Json 数据,没有双引号,请求是怎么回事儿?

    • 一个是原始数据,像这种httpclient,okhttp,restTemplate都是对结果做了封装的,,可以直接转成对象,你要结果就是json的话,指定解析类型是String就行了;实在不会的话,就你那个结果转json也是可以实现的;

关注 2 回答 1

脚一你了踢便顺‭ 回答了问题 · 1月24日

请教无限评论查询的写法

这种树结构的话,mysql建议加一个path字段,数据是从根结点到当前节点的路径,比如存1,2,3!这样就把递归的查询,表成了like查询!

关注 4 回答 3

脚一你了踢便顺‭ 回答了问题 · 1月22日

CommandLineRunner在初始化与@Bean顺序冲突导致逸出问题

从官方的介绍来说 CommandLineRunner和ApplicationRunner 都是在容器启动完以后执行,
所以在容器启动bean创建的时候,永远也不会执行的,不管你怎么改(如果你那个bean,可以确定其他接口绝对不会注入的话,懒加载是可以解决你这个问题的,但是治标不治本,一旦其他接口注入bean,还是cachemap会为空)
所以可以考虑其他方式初始化cacheMap,比如根据需要实现Aware的相关子接口或者InitializingBean接口,Order或者DependsOn注解,控制bean创建的先后顺序,保证你用到cachemap的bean,先于bean创建前执行

关注 2 回答 1

脚一你了踢便顺‭ 回答了问题 · 1月21日

解决MyBatis如何写Mapper才能进行使用升序或者降序的模糊查询切换

@Param("sort") String sort

关注 2 回答 2

脚一你了踢便顺‭ 发布了文章 · 1月21日

再谈谈动态数据源的事情

连着两天都遇到了这个从数据库读取表数据构造数据源,而不是在配置文件中写死数据源的业务场景!第一次发文章,没想到又给到了动态数据源!猿粪啊
先说一下具体的场景:大体上是有个基础库,库中有个表比较特殊,保存的是数据源信息,系统希望能通过这个表来维护数据源,实现数据源的管理,当然只是表数据crud的话,也没必要写这个了不是!主要是他还希望这个表构造的数据源,也能执行正常执行相关的crud操作!
首先介绍一个类:AbstractRoutingDataSource,看路由就大概知道他能干啥了,它的原理其实也很简单,他维护了一个Map<Object,DataSource>和默认数据源,有一个抽象方法就是生成map的key,如果从map中找不到数据源,那就使用默认数据源;
说一下具体的实现方式
1:springboot默认配置数据源的配置,咱们合理的利用起来,做成默认数据源;image.png
2:实现自己的AbstractRoutingDataSource,
image.png
image.png
image.png

解释一下:
1:EnvironmentAware,因为此时数据源还在实例化的过程,触发时机很早,所以为了获得yml中的默认数据源的配置,我们实现了EnvironmentAware接口,此接口的回调在ApplicationContextAwareProcessor(实现了BeanPostProcessor).postProcessBeforeInitialization中触发的,所以他的时机会早于AbstractRoutingDataSource.afterPropertiesSet的方法,afterPropertiesSet中又进行了相关操作,所以EnvironmentAware的回调方法,相对来说比较合适做从默认数据源中读取表结构的操作
2:因为这个数据源就是我们注入到容器中的数据源,容器中也只会有这一个数据源,所以在此时我们要读取数据源的话,orm框架或者jdbcTemplate都没有实例化,要么我们自己去new jdbcTemplate,我这里选择的是直接使用jdbc代码
3:抽象方法determineCurrentLookupKey,它获取的ThreadLocal中的数据,ThreadLocal中的数据,是通过aop的方式丢进去的,可以根据业务可以自行决定设置key的来源image.png

然后 就完了! - -
后面就是激动人心的效果了,测试一下效果!
1:清除数据源表数据
2:数据源表插入数据并且直接根据key指定数据源查询数据
执行前:
image.png

image.png

image.png
image.png
image.png

可以看到 尽管我们key指定了test,但是因为数据源表没有数据,所以还是访问的默认数据源framework中的数据

3:插入数据源
image.png

image.png

这个时候数据源表已经插入了数据,查询接口也是返回的test库中的数据了!完美解决

多说一句话:AbstractRoutingDataSource想要做事务下面的切换数据源,是不行的;因为我是用mybatis,在同一个事务下复用connection和sqlsession,你切换了数据源其实并没有什么用;如果事务下也需要切换数据源,可以优先考虑jdbcTemplate,并且自行控制事务;实际上更推荐微服务,他更香

最后就是代码了 我直接丢网盘
链接: https://pan.baidu.com/s/1I51F... 提取码: 97sg 复制这段内容后打开百度网盘手机App,操作更方便哦

查看原文

赞 1 收藏 1 评论 0

脚一你了踢便顺‭ 回答了问题 · 1月20日

SpringBoot 怎么实现数据源的动态添加修改

又看到了这种需求了 - -
AbstractRoutingDataSource可以搞定

关注 2 回答 1

脚一你了踢便顺‭ 回答了问题 · 1月19日

解决我想在springboot 启动前读取数据库中的配置到内存,并且在拦截器里面获取启动时读取的配置

启动前dataSource都没有实例化,难道你要写jdbc?

关注 3 回答 2

脚一你了踢便顺‭ 回答了问题 · 1月19日

请教各位,关于数据查询的问题,我应该怎样实现这个需求?

spring爸爸早就考虑到这个问题了,defaultTargetDataSource就是你的公共库,
targetDataSources就是所有的业务库,AbstractRoutingDataSource这个抽象类,只要你重写determineCurrentLookupKey这个方法即可(其实就是生成targetDataSources 这个map的key,方便找到真实的数据源);

完美搞定从数据库读取数据源的问题
image.png

关注 3 回答 1

脚一你了踢便顺‭ 回答了问题 · 1月18日

SpringBoot不同的模块有两个启动类,我希望启动其中一个另外一个也启动,请问怎么实现?

通过执行dos命令或者shell脚本 你想启动多少个就启动多少个

关注 2 回答 1

认证与成就

  • 获得 15 次点赞
  • 获得 5 枚徽章 获得 0 枚金徽章, 获得 2 枚银徽章, 获得 3 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2020-09-24
个人主页被 574 人浏览