为啥不建议用BeanUtils.copyProperties拷贝数据 | 京东云技术团队

2023-12-22
阅读 6 分钟
251
在实际的业务开发中,我们经常会碰到VO、BO、PO、DTO等对象属性之间的赋值,当属性较多的时候我们使用get,set的方式进行赋值的工作量相对较大,因此很多人会选择使用spring提供的拷贝工具BeanUtils的copyProperties方法完成对象之间属性的拷贝。通过这种方式可以很大程度上降低我们手动编写对象属性赋值代码的工作量,...
封面图

玩转Spring状态机 | 京东云技术团队

2023-12-20
阅读 10 分钟
297
说起Spring状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring状态机就是状态模式的一种实现,在介绍Spring状态机之前,让我们来看看设计模式中的状态模式。
封面图

性能加速包: SpringBoot 2.7&JDK 17,你敢尝一尝吗 | 京东物流技术团队

2023-12-19
阅读 14 分钟
437
众所周知,SpringBoot3.0迎来了全面支持JDK17的局面,且最低支持版本就是JDK17,这就意味着,Spring社区将完全抛弃JDK8,全面转战JDK17。作为JAVA开源生态里的扛把子,Spring可以说是整个JAVA生态的风向标,可以说,当Spring转战JDK17,会很快带领JAVA生态全面的跟进JDK17。而我本篇文章重点讲述Spring版本和JDK17升级中...
封面图

springboot如何用jar包启动,同时为不同机房设置不同的配置文件 | 京东云技术团队

2023-12-01
阅读 3 分钟
246
1、首先先把配置文件从jar中抽离示例代码: {代码...} 2、把抽离的配置文件,放到conf目录下利用maven-assembly-plugin,抽取配置文件到conf目录下,示例代码: {代码...} {代码...} 最终效果如下:3、修改maven打包配置将conf加入到classpath中示例代码如下: {代码...} 最终达到的效果是:将springboot的jar包解压后,...
封面图

Spring配置文件的魔法炼金术:如何制造容器化时代的完美配方 | 京东物流技术团队

2023-11-28
阅读 4 分钟
254
基于现代服务的云原生十二要素理论,我们在采用容器化部署时,要保证同一个镜像可以满足不同环境的部署要求,而不是不同环境打包不同的镜像。本文档主要介绍一种基于spring框架的满足不同环境配置的编译打包方案,满足同一个镜像可以在环境分组下通过启动项配置实现不同环境的部署。
封面图

关注潜在的整数越界问题 | 京东物流技术团队

2023-11-20
阅读 5 分钟
322
乍一看该比较器实现不存在问题,但是如果 tag1 = Integer.MIN_VALUE = -2147483648, tag2 为大于 0 的数字如 1,则此时 tag1 - tag2 = 2147483647,但是按照 java.util.Comparator#compare 的定义,tag1 小于 tag2 时,应该返回一个负数,以上写法在遇到这样的示例数据时将导致排序结果错乱,引发相关 bug。
封面图

高效开发与设计:提效Spring应用的运行效率和生产力 | 京东云技术团队

2023-11-20
阅读 7 分钟
403
Spring框架是广泛使用的Java开发框架之一,它提供了强大的功能和灵活性,但在大型应用中,由于Spring框架的复杂性和依赖关系,应用的启动时间和性能可能会受到影响。这可能导致开发过程中的迟缓和开发效率低下。优化Spring应用程序的启动速度和性能是一个重要的任务,通过分析和优化应用的初始化过程、减少不必要的依赖...
封面图

你真的了解@Async吗? | 京东云技术团队

2023-11-17
阅读 2 分钟
384
开发中会碰到一些耗时较长或者不需要立即得到执行结果的逻辑,比如消息推送、商品同步等都可以使用异步方法,这时我们可以用到@Async。但是直接使用 @Async 会有风险,当我们没有指定线程池时,他会默认使用其Spring自带的 SimpleAsyncTaskExecutor 线程池,会不断的创建线程,当并发大的时候会严重影响性能。所以可以将...
封面图

SpringBoot 项目优雅实现读写分离 | 京东云技术团队

2023-11-13
阅读 7 分钟
410
当使用Spring Boot开发数据库应用时,读写分离是一种常见的优化策略。读写分离将读操作和写操作分别分配给不同的数据库实例,以提高系统的吞吐量和性能。
封面图

浅析SpringBoot加载配置的6种方式 | 京东云技术团队

2023-10-30
阅读 4 分钟
331
从配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一,但就是这么常用的功能,仍然有很多开发者抓狂~今天带大家简单回顾一下这六种的使用方式:
封面图

带着问题去分析:Spring Bean 生命周期 | 京东物流技术团队

2023-10-26
阅读 9 分钟
170
Bean在Spring中的定义是_org.springframework.beans.factory.config.BeanDefinition_接口,BeanDefinition里面存储的就是我们编写的Java类在Spring中的元数据,包括了以下主要的元数据信息:
封面图

SpringBoot自动配置原理解析 | 京东物流技术团队

2023-10-25
阅读 6 分钟
275
首先介绍一下什么是SpringBoot,SpringBoost是基于Spring框架开发出来的功能更强大的Java程序开发框架,其最主要的特点是:_能使程序开发者快速搭建一套开发环境。SpringBoot能将主流的开发框架(例如SpringMVC,Dubbo,Mybatis,Redis等),做到像Maven导入Jar包一样的简洁快速,做到开箱即用。_其中最关键的技术就是_Spri...
封面图

主动写入流对@ResponseBody注解的影响 | 京东云技术团队

2023-09-19
阅读 3 分钟
717
负责的同事看到失败后立即与我展开讨论(因为不是关键业务,所以不需要回滚,修复即可),我们发现新功能模板下载的代码与之前的代码有所不同,恰好之前的功能又可以正常运行,所以同事对现有代码进行改造然后预发布测试完成后再次上线。

基于Spring事务的可靠异步调用实践 | 京东物流技术团队

2023-09-14
阅读 7 分钟
430
通过使用SpringTxAsync组件,我们成功地解决了在仓储平台(WMS6)中的异步调用需求。经过近二年多的实践并经历了两次618活动以及两次双11活动,该组件已经在我们的所有应用中稳定运行并成功应用于各种业务场景。

从头到尾说一次 Spring 事务管理(器) | 京东云技术团队

2023-08-23
阅读 11 分钟
450
事务管理,一个被说烂的也被看烂的话题,还是八股文中的基础股之一。​本文会从设计角度,一步步的剖析 Spring 事务管理的设计思路(都会设计事务管理器了,还能玩不转?)为什么需要事务管理?先看看如果没有事务管理器的话,如果想让多个操作(方法/类)处在一个事务里应该怎么做: {代码...} 或者用 ThreadLocal 存储 ...
封面图

Spring缓存是如何实现的?如何扩展使其支持过期删除功能? | 京东云技术团队

2023-08-21
阅读 7 分钟
576
但有个问题是,我们希望将这些rpc结果数据缓存起来,并在一定时间后自动删除,以实现在一定时间后获取到最新数据。类似Redis的过期时间。 接下来是我的调研步骤和开发过程。
封面图

spring多数据源动态切换的实现原理及读写分离的应用 | 京东云技术团队

2023-08-09
阅读 5 分钟
369
AbstractRoutingDataSource是Spring框架中的一个抽象类,可以实现多数据源的动态切换和路由,以满足复杂的业务需求和提高系统的性能、可扩展性、灵活性。
封面图

从源码层面深度剖析Spring循环依赖 | 京东云技术团队

2023-08-08
阅读 6 分钟
297
Spring 在创建 Bean 过程中,使用到了三级缓存,即 DefaultSingletonBeanRegistry.java 中定义的:
封面图

@ControllerAdvice注解使用及原理探究 | 京东物流技术团队

2023-08-04
阅读 19 分钟
527
最近在新项目的开发过程中,遇到了个问题,需要将一些异常的业务流程返回给前端,需要提供给前端不同的响应码,前端再在次基础上做提示语言的国际化适配。这些异常流程涉及业务层和控制层的各个地方,如果每个地方都写一些重复代码显得很冗余。
封面图

SpringCloud-Hystrix服务熔断与降级工作原理&源码 | 京东物流技术团队

2023-08-04
阅读 17 分钟
623
在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请...
封面图

Spring Boot Starter 剖析与实践 | 京东云技术团队

2023-08-01
阅读 19 分钟
437
对于 Java 开发人员来说,Spring 框架几乎是必不可少的。它是一个广泛用于开发企业应用程序的开源轻量级框架。近几年,Spring Boot 在传统 Spring 框架的基础上应运而生,不仅提供了 Spring 的全部功能,还使开发人员更加便捷地使用。在使用 Spring Boot 时,我们经常会接触到各种 Spring Boot Starter,例如 spring-boo...
封面图

实际上手体验maven面对冲突Jar包的加载规则 | 京东云技术团队

2023-07-19
阅读 6 分钟
384
相信大家在日常的开发过程中都遇到过Jar包冲突的问题,emm,在最近处理业务需求时我也遇到了不同版本jar包冲突导致项目加载出错的问题。主要是一个完整的项目会不可避免的使用第三方的Jar包来实现功能开发,各种第三方包之间可能会存在依赖关系,不同版本的依赖就会可能导致依赖间的相互冲突,进而导致整个项目加载的失败。
封面图

聊聊Spring注解@Transactional失效的那些事 | 京东云技术团队

2023-07-18
阅读 6 分钟
579
emm,又又又踩坑啦。这次的需求主要是对逾期计算的需求任务进行优化,现有的计算任务运行时间太长了。简单描述下此次的问题:在项目中进行多个数据库执行操作时,我们期望的是将其整个封装成一个事务,要么全部成功,或者全部失败,然而在自测异常场景时发现,里面涉及的第一个数据状态更新成功了,但是后面的数据在插入...
封面图

SpringIoc容器之Aware | 京东云技术团队

2023-07-06
阅读 9 分钟
639
Aware是Spring提供的一个标记超接口,指示bean有资格通过回调样式的方法由Spring容器通知特定的框架对象,以获取到容器中特有对象的实例的方法之一。实际的方法签名由各个子接口确定,但通常只包含一个接受单个参数的void返回方法。
封面图

Spring Loaded代码热更新实践和原理分析 | 京东云技术团队

2023-07-05
阅读 3 分钟
2.7k
1、引言开发者在编码效率和快速迭代中的痛点场景包括:修改代码后,需要频繁重启应用,导致开发效率低下;实时调试时,不能立即看到代码修改的结果;大型项目中,重启的时间成本较高。针对这些问题,本文将深入探讨如何利用Spring Loaded热更新技术提高开发效率,减少编译和重启时间。分析Spring Loaded的热更新原理,以...
封面图

Spring容器获取Bean的9种方式 | 京东云技术团队

2023-07-04
阅读 9 分钟
1.3k
随着SpringBoot的普及,Spring的使用也越来越广,在某些场景下,我们无法通过注解或配置的形式直接获取到某个Bean。比如,在某一些工具类、设计模式实现中需要使用到Spring容器管理的Bean,此时就需要直接获取到对应的Bean。
封面图

这问题巧了,SpringMVC 不同参数处理机制引发的思考 | 京东云技术团队

2023-06-26
阅读 3 分钟
553
功能模块中,提供两个 Http 服务。一个是列表查询(application/json 请求),一个是列表导出(表单请求)。运行环境发现个问题:MVC model 新添加的属性,类似的 Http 请求,一个有值,一个没有
封面图

Spring源码核心剖析 | 京东云技术团队

2023-06-21
阅读 11 分钟
535
SpringAOP作为Spring最核心的能力之一,其重要性不言而喻。然后需要知道的是AOP并不只是Spring特有的功能,而是一种思想,一种通用的功能。而SpringAOP只是在AOP的基础上将能力集成到SpringIOC中,使其作为bean的一种,从而我们能够很方便的进行使用。
封面图

一种实现Spring动态数据源切换的方法 | 京东云技术团队

2023-06-19
阅读 9 分钟
496
节约bdp的集群资源。接入新的宽表时,通常uat验证后就会停止集群释放资源,在对应的查询服务器uat环境时需要查询的是生产库的表数据(uat库表因为bdp实时任务停止,没有数据落入),只进行服务器配置文件的改动而无需进行代码的修改变更,即可按需切换查询的数据源。
封面图

从0到1搭建自己的脚手架(java后端) | 京东云技术团队

2023-06-01
阅读 3 分钟
1.2k
脚手架是一种基础设施工具,用于快速生成项目的框架代码和文件结构。它是一种标准化的开发工具,使开发人员能够在项目的早期阶段快速搭建出一个具备基本功能和结构的系统。
封面图