自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 解析配置文件自动装配 DataSource + AbstractRoutingDataSource + AOP 实现动态数据源 - 补充:兼顾事务回滚以及分布式事务的情况

前两篇文章已经介绍了动态数据源的具体实现过程,在经过一段时间的使用后,发现了两个比较严重的问题,在这里进行补充说明。 事务执行失败时没有切回默认数据源 @Transactional 注解的方法意味着使用数据库事务执行方法中的 sql 操作,默认情况下当方法抛出不受检查异常时,事务会进行回滚,我所实...

2018-11-28 17:55:17 229 0

原创 MyBatis 缓存 - 上:一级缓存

在实际项目中,有些情况下相同的查询语句可能被重复执行,MyBatis 提供了一级缓存来优化这种情况,相同的查询 Sql 会命中一级缓存,直接返回,减少不必要的数据库查询提高性能。 实现原理 Mybatis 提供了 SqlSession 来方便使用者操作数据库,而正真执行数据库操作的是 Execut...

2018-11-19 11:46:28 70 0

原创 单体应用和服务化应用的一些思考

单体应用 单体应用整个项目代码都在同一个应用工程中,这种方式在早期可以有效提高开发效率,测试、部署和运维也比较方便。少量的开发人员就可以完成所有工作。然而随着业务规模、数据量的不断扩大,单体应用就会出现问题, 部署测试效率低下:每次修改了代码需要进行测试验证时必须将整个应用进行编译、打包以及部署...

2018-11-19 10:35:00 195 0

原创 Spring MVC 根据 controller 层方法入参和返回值动态生成日志 - 下 :借助 SpEL 或自定义的方式解析日志表达式

上一篇文章已经就如何获取到 controller 层方法的参数和返回值进行了详细分析,并且封装了 HandlerMethodPostProcessor 接口以便使用,接下来就实现业务需求:根据 controller 层方法的入参和返回值动态生成日志。 实现日志解析 实现思路是这样的:定义一个注解,...

2018-11-16 16:55:13 370 0

原创 Spring MVC 根据 controller 层方法入参和返回值动态生成日志 - 上 :寻找扩展点并进行封装

背景 需求是这样的:对网关层指定接口(url)的调用情况做日志记录,日志需要根据 controller 层方法的入参和返回值动态生成。 如果只是记录 url 的调用情况可以直接使用 HandlerInterceptor 实现,但需求中需要能够访问入参和返回值,虽然通过拦截器提供的接口也可以解析到请...

2018-11-16 16:02:17 880 0

原创 Docker 二:IDEA + Docker 插件创建镜像并运行 spring boot 项目

IDEA 上提供了 Docker integration 插件,可以很方便的管理镜像和容器,当然这些操作通过命令行也能完成,使用 IDEA 插件方式的另一个便利在于 IDEA 提供了 Docker 配套的 Configuration,可以一次性定义好操作序列,修改代码或资源后只需 Run/Debu...

2018-11-16 10:20:26 543 0

原创 Docker 一:入门

Docker 可以用来打包应用、依赖以及环境到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。 docker 两个关键的部分为容器和镜像,这两者的关系可以理解为 OOP 中类和对象的关系,容器作为对象,镜像作为类。Docker 镜像是用于创建 Docker 容器的模板,容器可以独立运...

2018-11-14 16:15:36 97 0

原创 解析配置文件自动装配 DataSource + AbstractRoutingDataSource + AOP 实现动态数据源 上:原理解析,解析数据源

spring boot 自动装配会通过 spring.datasource.*为我们自动装配数据源,所以想要动态的切换数据源,第一件事是配置数据源,其次是怎么切换?最后何时切换? 原理解析(使用 AbstractRoutingDataSource 实现) spring-jdbc 提供了 Abstr...

2018-11-13 17:16:22 340 1

原创 解析配置文件自动装配 DataSource + AbstractRoutingDataSource + AOP 实现动态数据源 下:配置动态数据源,AOP 进行使用

上篇文章中已经借助 DynamicDataSourceBuilder 类从配置文件中解析得到了默认数据源和动态数据源,接下来需要配置动态数据源的“本体”,并借助 AOP 动态的切换数据源。 配置动态数据源 AbstractRoutingDataSource 实现了 InitializingBean...

2018-11-13 17:14:39 281 0

原创 fastjson 始终将 null 对象以 "null " 的形式返回到前端引发的源码解析 - 上:从 DispatcherServlet 出发

背景 项目中使用 fastjson 将 spring MVC 返回结果输出为 json 格式数据,有个需求是 null 对象不输出,即前端不会接收到 "obj": null 形式的 json 数据,然而在进行如下的配置后, null 对象始终输出,因此以阅读源码...

2018-11-07 13:21:54 245 0

原创 fastjson 始终将 null 对象以 "null " 的形式返回到前端引发的源码解析 - 下:来到 fasjson 内部,消除疑惑

接上篇:fastjson 始终将 null 对象以 "null " 的形式返回到前端引发的源码解析 - 上:从 DispatcherServlet 出发 终于来到了 fastjson 内部。 FastJsonHttpMessageConverte...

2018-11-07 13:20:02 189 0

原创 从 HTTPServletRequest 中根据 User-Agent 获取访问设备信息

背景:根据 HttpServletRequest获取访问设备信息。 Http 协议请求头中的 User-Agent属性会将客户端设备的信息传递给服务器,这些信息包括客户端操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 参考: 用户代理(User-Agent)...

2018-11-01 18:45:35 7002 1

提示
确定要删除当前文章?
取消 删除