![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
文章平均质量分 94
Spring
-无-为-
做过开发,创过业,踩过坑。从Java后台开发,PL/SQL开发,Pro*C开发,到shell脚本,再到兼职开发的MySQL DBA。
为人友善诚恳,工作踏实,吃苦耐劳,富有朝气,激情,以及团队合作意识。
https://github.com/zhouxx1055
https://zhouxx.blog.csdn.net/
展开
-
实战: SpringBoot中5种增强的方法 : 加解密、脱敏、格式转换、时间时区处理(码到三十五)
可以编写自定义的来处理特定的媒体类型,并在其中实现自定义的序列化和反序列化逻辑。然后,将其注册到Spring MVC的配置中。「使用场景」当Spring Boot默认的无法满足自定义的序列化和反序列化需求时。当需要处理非标准的媒体类型时,如自定义的二进制格式或文本格式。当需要在序列化和反序列化过程中应用复杂的业务逻辑时。创建一个自定义的}}}}选择哪种方法取决于具体需求。对于简单的自定义需求,使用和注解是最直接和简单的方式。而对于更复杂的全局配置或跨多个控制器的需求,则可能需要使用的配置或。原创 2024-07-27 23:23:46 · 423 阅读 · 0 评论 -
科普文:11个编程原则助你写出优雅代码
糟糕的代码形式可以千千万,优雅且高质量的代码却是极其的相通,如何写出让人信服的高质量代码?编程是一个看似简单,但是还是有很大学问,特别是编写出高质量的优雅代码,最后我们再总结下本文总结的 11种原则:RefactorSOLID。原创 2024-07-27 21:22:02 · 577 阅读 · 0 评论 -
科普文:田哥万字总结JVM核心知识
JVM 全称 Java Virtual Machine(Java 虚拟机) ,也就是我们耳熟能详的 Java 虚拟机。它能识别 .class后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作。JRE全程Java Runtime Environment,是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。原创 2024-07-23 18:48:09 · 808 阅读 · 0 评论 -
科普文:万字图文解说Dubbo的RPC调用核心流程
到这终于讲完了一次RPC请求在Dubbo中经历整个核心流程不知道你看完有什么感受这里我再来画一张图总结整个调用过程值得注意是,上面提到的所有调用环节,注意说的是所有,Dubbo都留了对应的扩展点也就是说,小到一个Filter,大到整个通信协议你都可以进行自定义扩展从这也可以看出,Dubbo在设计上的优秀之处。原创 2024-07-23 11:10:50 · 599 阅读 · 0 评论 -
实战:OpenFeign使用以及易踩坑说明
对于单个接口怎么配置超时时间,我这里给出一个方案,如果你有其他方案,欢迎探讨。@Bean@Bean为了使用ribbon负载均衡,上面加了@LoadBalanced如果使用RestTemplate,就会使用OkHttp3ClientHttpRequestFactory中配置的时间。原创 2024-07-23 06:02:51 · 663 阅读 · 0 评论 -
规范:java代码编写规范
比如在项目中不同的类型的业务可能需要上传各种各样的附件,此时就可以定义好不同的一个附件的枚举,来区分不同业务的附件。不要在代码中直接写死,不定义枚举,代码阅读起来非常困难,直接看到数字都是懵逼的。。我们做了这么多的工作,最终也只有跑起来才能够看到效果,所以在maven打包的时候,不要在了,让测试跑起来。如果可以的话,把单元测试加到我们的CI/CD流程中,只有常态化的用起来,才可以真正的产生效果。上面这些只是我在进行代码质量实践时的一些经验,并不适用于所有人或者场景,但是不管我们可以做到多少,怎么做,原创 2024-07-22 02:08:54 · 798 阅读 · 0 评论 -
规范:前后端接口规范
一个接口一般对参数(请求数据)都会进行安全校验,参数校验的重要性自然不必多说,那么如何对参数进行校验就有讲究了。一般来说有三种常见的校验方式,我们使用了最简洁的第三种方法业务层校验Validator + BindResult校验Validator + 自动抛出异常业务层校验无需多说,即手动在java的Service层进行数据校验判断。不过这样太繁琐了,光校验代码就会有很多而使用。原创 2024-07-21 10:19:19 · 1060 阅读 · 0 评论 -
实战:springboot用LocalDateTime快速替换Date
在项目中大家从Date升级到在设计上更加现代化、易用且安全,克服了Date和Calendar的诸多缺点。虽然它们在功能上有重叠之处,但提供了更好的 API 和功能,推荐在 Java 8 及以上版本中使用新的日期和时间 API。原创 2024-07-20 09:08:25 · 678 阅读 · 0 评论 -
科普文:高性能短链设计
今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获短链有啥好处,用长链不香吗短链跳转的基本原理短链生成的几种方法高性能短链的架构设计。原创 2024-07-19 18:07:19 · 961 阅读 · 0 评论 -
科普文:Dubbo的核心流程
到这终于讲完了一次RPC请求在Dubbo中经历整个核心流程不知道你看完有什么感受这里我再来画一张图总结整个调用过程值得注意是,上面提到的所有调用环节,注意说的是所有,Dubbo都留了对应的扩展点也就是说,小到一个Filter,大到整个通信协议你都可以进行自定义扩展从这也可以看出,Dubbo在设计上的优秀之处。原创 2024-07-19 17:36:11 · 733 阅读 · 0 评论 -
实战:搞懂Redisson、分布式锁、限流器
Redission是一个基于Redis实现的Java分布式对象存储和缓存框架。它提供了丰富的分布式数据结构和服务。例如:分布式锁、分布式队列、分布式Rate Limiter等。Redisson顾名思义,Redis的儿子,Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。原创 2024-07-19 12:07:15 · 976 阅读 · 0 评论 -
玄姐:阿里基于 Spring AI 发布新版本
Spring Cloud Alibaba AI 目前已经顺利融合了 Spring AI 框架的 0.8.1版本接口,并实现了与“通义”高级模型系列的顺畅连接。这种整合是通过阿里云的灵积模型服务实现的,该服务基于“模型即服务”(MaaS)的理念,专注于 AI 领域的多样化模型应用,并通过标准化API,有效地支持模型推理、模型微调等全方位的功能。原创 2024-07-19 04:54:34 · 697 阅读 · 0 评论 -
科普文:万字详解MapStruct使用教程
MapStruct是一个Java注解处理器,它的主要功能是自动生成类型安全、高性能且无依赖的bean映射代码。这个工具基于“约定优于配置”的原则,极大地简化了Java Bean类型之间的映射实现过程。在多层架构的应用中,经常需要在不同的对象模型之间进行转换,例如在持久层的实体和传输层的DTO(Data Transfer Object,数据传输对象)之间。手动编写这种映射代码是一项繁琐且容易出错的任务。原创 2024-07-19 04:38:17 · 1112 阅读 · 0 评论 -
实战:Memcached的概念作用以及用法详解
memcached是LiveJournal旗下的Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已经成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。传统的Web应用都将数据保存到RDBMS中,应用服务器从RDBMS中读取数据、处理数据并在浏览器中显示。但是随着数据量增大、访问的集中、就会出现RDBMS的负担加重、数据库响应变慢、导致整个系统响应延迟增加。原创 2024-07-18 09:48:58 · 862 阅读 · 0 评论 -
实战:Eureka的概念作用以及用法详解
Netflix Eureka 是一款由 Netflix 开源的基于 REST 服务的注册中心,用于提供服务发现功能。Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka 进行了二次封装,主要负责完成微服务架构中的服务治理功能。Spring Cloud Eureka 是一个基于 REST 的服务,并提供了基于 Java 的客户端组件,能够非常方便的将服务注册到 Spring Cloud Eureka 中进行统一管理。原创 2024-07-18 09:40:19 · 1475 阅读 · 0 评论 -
实战:详解Spring创建bean的流程(图解+示例+源码)
我们来看下 Spring Framework 的官方文档:简而言之,bean 是由 Spring IoC 容器实例化、组装和管理的对象。对于普通的 Java 对象,当 new 的时候创建对象,然后该对象就能够使用了。一旦该对象不再被使用,则由 Java 自动进行垃圾回收。而 Spring 中的对象是 bean,bean 和普通的 Java 对象没啥大的区别,只不过 Spring 不再自己去 new 对象了,而是由 IoC 容器去帮助我们实例化对象并且管理它,我们需要哪个对象,去问 IoC 容器要即可。原创 2024-07-18 05:47:25 · 969 阅读 · 0 评论 -
实战:在项目中常用的8种设计模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。对于一个进阶高级开发的技术人员来说,了解设计模式的理念和具体的实现颇为重要,本期内容分享就到这里了,希望对你能有所帮助。原创 2024-07-17 03:52:49 · 753 阅读 · 0 评论 -
科普文:详解23种设计模式
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素)的书,该书首次提到了软件开发中设计模式的概念。四位作者合称GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则。原创 2024-07-17 03:51:24 · 673 阅读 · 0 评论 -
实战:Spring Boot与Apache CXF构建企业级服务SOAP
通过结合使用 SpringBoot 和 Apache CXF,开发者可以快速、高效地构建和部署高性能、可扩展的 Web 服务。SpringBoot 简化了配置和依赖管理,而 Apache CXF 提供了强大的 Web 服务功能和灵活性,使得构建现代企业级应用变得更加容易。通过 SpringBoot 的自动配置和依赖管理功能,开发者可以快速构建基于 Apache CXF 的 Web 服务应用。它通过自动配置、独立运行和生产就绪的功能,使开发者能够专注于业务逻辑,而无需处理繁杂的配置和依赖管理。原创 2024-07-17 03:50:34 · 879 阅读 · 0 评论 -
实战:SpringBoot 15个功能强大Bean
其实SpringBoot为我们注册了一个Bean对象,在代码中可以直接注入该对象我们还可以拿到原始配置的参数信息输出结果可以根据自己的需要进行解析处理。如果你想在项目中获取Banner信息,那么你可以直接在代码中注入对象。注意:确保你没有关闭Banner,也就是说你没有进行如下的配置。编程方式如果你关闭了Banner,那么上面的注入将会报错。ConversionService是个非常重要及强大的类,该类在SpringBoot启动过程中将配置文件中的配置数据转换为对应的数据类型。原创 2024-07-17 03:49:53 · 853 阅读 · 0 评论 -
科普文:java 9新特性 接口方法私有化
commons();commons();//定一个私有的方法,把重复部分的代码抽离出来。然后在methodA与methodB方法内部去调用。//私有方法只能在本类中调用,这里包括接口的实现类也不能调用。测试代码在接口中使用private修饰方法即可。在方法的内部去调用。在 Java 9 的接口中,私有方法可以分为实例私有方法和静态私有方法两种类型:实例私有方法:这些方法不能在接口外部调用,只能在接口内部的默认方法或其他私有方法中调用。原创 2024-07-17 03:49:03 · 747 阅读 · 0 评论 -
实战:SpringBoot启动流程中的自动装配机制AutoConfiguration解析
SpringBoot 的自动配置机制旨在根据项目中的类路径和配置属性,自动配置 Spring 应用程序。通过自动配置,开发者无需编写大量的配置代码,就可以快速启动和运行 Spring 应用程序。原创 2024-07-16 07:44:09 · 848 阅读 · 0 评论 -
实战:SpringBoot启动流程中的扩展机制解析
通过深入分析ApplicationContextInitializer和ApplicationListener接口,以及自定义SpringApplicationRunListener,我们可以看到SpringBoot启动流程中的强大扩展机制。在本篇文章中,我们将进一步分析SpringBoot启动流程中的扩展机制,特别是ApplicationContextInitializer和ApplicationListener,并展示如何自定义这些组件来扩展SpringBoot的功能。原创 2024-07-16 07:41:12 · 879 阅读 · 0 评论 -
实战:SpringBoot启动流程中 SpringApplication 类及其子组件解析
在前两篇文章中,我们介绍了SpringBoot的启动流程,并深入分析了启动流程中的核心方法。本篇文章将进一步探讨SpringApplication类及其子组件,分析它们在启动过程中所扮演的角色和实现细节。SpringApplicationRunListeners类用于管理多个 SpringApplicationRunListener实例,并在不同的启动阶段调用它们。:在应用程序启动的不同阶段,调用所有注册的 SpringApplicationRunListener 实例。原创 2024-07-16 07:37:04 · 727 阅读 · 0 评论 -
实战:SpringBoot启动流程关键方法解析
本篇文章将继续深入分析SpringBoot的启动流程,聚焦SpringApplication类中的关键方法以及各个启动阶段的细节。createApplicationContext方法用于创建具体的应用上下文,例如 AnnotationConfigApplicationContext或ReactiveWebServerApplicationContext。配置上下文,加载配置和Bean定义,调用监听器的contextPrepared方法。:调用Spring框架的refresh方法,触发应用上下文的刷新过程。原创 2024-07-16 07:33:44 · 830 阅读 · 0 评论 -
实战:利用FactoryBean实现SPI获取对象
Java 6 引入了一种功能,用于发现和加载与给定接口匹配的实现:服务提供者接口(SPI)。SPI 是 java 用于发现和加载与给定接口匹配的实现提供的一种实现机制。主要是为了扩展现有系统应用等。SPI机制是Java的一种服务发现机制,为了方便应用扩展。那什么是服务发现机制?简单来说,就是你定义了一个接口,但是不提供实现,接口实现由其他系统应用实现。你只需要提供一种可以找到其他系统提供的接口实现类的能力或者说机制。原创 2024-07-16 07:02:24 · 950 阅读 · 0 评论 -
实战:SpringBoot项目开发中的扩展接口和开发技巧
Spring容器启动后在实例化所有bean之前会调用BeanFactoryPostProcessor,在这里的回调方法中我们可以对所有bean对应的BeanDefinition进行修改,以满足特定的需求,如上在UserService bean对象中有个name属性,在这里修改设置值为Pack。通过不断学习和实践,我们可以不断提升自己的技能水平,为项目的成功开发奠定坚实的基础。当需要修改或增加功能时,我们只需要在相应的扩展接口上进行操作,而无需改动项目的核心代码,从而降低了项目的维护成本和风险。原创 2024-07-16 06:10:50 · 1139 阅读 · 0 评论 -
科普文:SpringBoot核心注解及应用梳理
如果没有指定 name 属性,当注解写在字段上时,默认取字段名进行名称查找。到这里你应该清楚了@Resource@Autowired注入的区别了,自身再通过源码走一遍流程,以后就不用在死记硬背这些东西了。Spring & SpringBoot提供了非常多的条件注解用来控制是否创建Bean对象,同时你还可以自定义条件注解。标记一个方法来定义要由Spring的IoC容器管理的bean,该方法的返回值变为bean实例。应用于类,以在一个全局处理组件中处理整个应用程序中的异常,它允许您定义应用于所有的。原创 2024-07-16 06:00:25 · 745 阅读 · 0 评论 -
实战:SpringBoot扩展功能ExitCodeGenerator生成的退出代码
通过实现和使用 ExitCodeGenerator,开发者可以更加灵活地控制和管理 Spring Boot 应用程序的退出行为,从而提高系统的可靠性和可维护性。是 Spring Boot 框架中的一个接口,它允许应用程序退出时生成自定义的退出代码。你可以根据不同的退出码,执行相应的动作,如:资源清理,日志记录等。当执行退出时,会遍历所有的对象,直到exitCode不为0时退出。这里的输出就与具体什么异常没有关系了,只要遇到第一个返回不为0的数字,则直接退出了。然后,在需要的时候,可以调用。原创 2024-07-16 05:48:44 · 283 阅读 · 0 评论 -
实战:SpringBoot源码分析之启动流程
通过深入分析SpringBoot应用程序的启动流程,我们可以更好地理解其内部机制,进而在开发中更好地利用这些机制,提高开发效率和代码质量。文件配置,基本实现零配置启动项目,简化基于Spring框架的应用程序的开发过程。在这篇文章中,我们将深入探讨SpringBoot应用程序的启动流程,了解其背后的机制。这里的SpringApplication.run是启动SpringBoot应用程序的入口。:准备上下文,加载配置,注册Bean,调用监听器的 contextPrepared 方法。原创 2024-07-16 04:10:07 · 1096 阅读 · 0 评论 -
实战:功能强大齐全BBS论坛项目Echo简介
Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java Web 技术栈(SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + ...),并提供详细的开发文档和配套教程。原创 2024-07-15 10:45:16 · 825 阅读 · 0 评论 -
科普文:spring声明式事务@Transactional原理与实现
在使用事务的时候需要添加@EnableTransactionManagement注解来开启事务,Spring事务底层是通过AOP来实现的,所以启用事务后,同样会向容器中注入一个代理对象创建器,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,事务使用的是InfrastructureAdvisorAutoProxyCreator。原创 2024-07-15 08:14:54 · 1184 阅读 · 0 评论 -
实战:spring项目中不推荐用自带的声明式事务@Transactional
以上的事务管理适合大多数情况下需要编程式管理事务的情况,使用哪种方式需要架构师和程序员根据业务类型选择。Spring还提供了TransactionalOperator 和 ReactiveTransactionManager的方式来实现编程式事务,参考文章[2]中有说明,有兴趣的可以去查看Spring的官方网站。原创 2024-07-15 07:15:51 · 1026 阅读 · 0 评论 -
科普文:数据库事务、隔离级别和并发问题(MySQL)
事务:并发连接场景下,用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。MySQL的事务就是将多条SQL语句作为整体进行执行。:事务将数据库从一种一致性状态转换为另一种一致性状态;保证系统始终处于一个完整且正确的状态。:事务可由一条非常简单的 SQL 语句组成,也可以由一组复杂的SQL 语句组成。:在数据库提交事务时,可以确保要么所有修改都已经保存,要么所有修改都不保存。事务是访问并更新数据库各种数据项的一个程序执行单元。在 MySQL innodb 下,单条语句都具备事务。原创 2024-07-15 06:31:13 · 372 阅读 · 0 评论 -
科普文:微服务之Apollo配置中心
写一个 Controller 类来输出 test 变量的值,使用了 Spring 的 @Value 注解,用于读取配置文件中的变量的值,这里来测试该值,项目启动后读取到的变量的值是设置在 application 配置文件中的默认值,还是远程 Apollo 中的值,如果是 Apollo 中配置的值,那么再测试在 Apollo 配置中心中改变该变量的值后,这里是否会产生变化。对程序配置的期望值也越来越高,配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……原创 2024-07-14 07:36:32 · 1251 阅读 · 0 评论 -
科普文:微服务技术栈梳理
如上两图所示,微服务架构下,需要的组件很多,上面中也并未列全。下面将梳理一下国内微服务架构下,用到的技术栈,仅供参考。在前面架构介绍的文章中的两句话,也适用于微服务组件的选择。在微服务架构中,选择合适的中间件是一个重要的决策。这会影响到系统的可用性、稳定性、可扩展性和开发效率。:首先,你需要清楚地了解你的系统需求。这包括你的系统的规模(如用户量、请求量、数据量)、性能需求(如响应时间、吞吐量)和功能需求(如消息队列、缓存、数据库)。你选择的中间件需要能够满足这些需求。:你的中间件需要能够处理你的系统的负载。原创 2024-07-13 00:03:03 · 1309 阅读 · 0 评论 -
spring-boot-starter-parent POM与spring-boot-starter POM有什么不同?
properties元素定义一系列属性,用于配置项目的不同方面。定义项目使用的 Java 版本为 1.8。其他属性如编码、资源分隔符等提供更多的配置选项。//...properties元素用于自定义属性,包括依赖、插件的版本管理。184个版本信息,把依赖、插件的版本信息集中到这里进行管理。原创 2024-07-13 03:30:00 · 1080 阅读 · 0 评论 -
科普文:深入理解Mybatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。1、Mybatis是一个半ORM(对象关系映射)框架,底层封装了JDBC,是程序员在开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。使得程序员可以花更多的精力放到业务开发中。另外,程序员直接编写原生态sql,严格控制sql执行性能,灵活度高。原创 2024-07-10 12:09:08 · 1508 阅读 · 0 评论 -
科普文:跟着Spring学设计模式
BeanPostProcessor 接口定义了两个方法:postProcessBeforeInitialization 和 postProcessAfterInitialization。它们允许我们在 bean 初始化前后对 bean 进行额外的处理。原创 2024-07-10 11:01:03 · 977 阅读 · 0 评论 -
Java web应用性能分析之【shell脚本分析java进程】
前面几篇解读了java进程问题分析定位。原创 2024-07-10 09:35:14 · 559 阅读 · 0 评论