spring
文章平均质量分 83
Java知识库
擅长JVM,Mysql,微服务架构性能调优,Spring Cloud Netfilx等常用框架源码解析Redis,等中间件技术架构设计及领域驱动设计。
展开
-
一篇文章学透ApplicationContext
BeanFactory是Spring中最基本的接口,它是Spring IoC容器中最底层的接口,提供了IoC容器最基本的形式,它具有最基本的 IoC 功能,负责管理 Spring Bean 的生命周期,通过 BeanFactory 可以获取指定 Bean 的实例。ApplicationContext是Spring中最重要的接口之一,它是Spring容器的具体实现,在BeanFactory的基础上添加了一些更加实用的功能,比如资源加载、事件发布、AOP和事务等。在这个示例代码中,我们通过。原创 2023-04-23 10:49:35 · 669 阅读 · 0 评论 -
吹爆Alibaba自研的Spring全能笔记,建议人手一份
Spring 这个技术栈,想必大家都知道,这玩意面试必考工作必用,对于每位 Java 程序员来说都是至关重要的;俗话说 Java 开发不学习 Spring 就像士兵上战场不带枪,我认为这个比喻很形象。Spring 几乎占据了 Java web 的半壁江山,其重要性不言而喻,它跟它后面诞生的一系列解决方案被我们亲切的称为“Spring 全家桶”。在当下毫不夸张地说,若是不会 Spring 就去面试,通过的概率基本为零。原创 2023-03-03 14:42:01 · 56 阅读 · 0 评论 -
Spring获取Bean的9种方式
随着SpringBoot的普及,Spring的使用也越来越广,在某些场景下,我们无法通过注解或配置的形式直接获取到某个Bean。比如,在某一些工具类、设计模式实现中需要使用到Spring容器管理的Bean,此时就需要直接获取到对应的Bean。本文为大家整理汇总了常见的获取Bean的方式,并提供一些优劣分析,方便大家在使用到时有更好的选择。同时,也会为大家适当的普及和拓展一些相关知识。原创 2023-01-13 09:54:48 · 2811 阅读 · 0 评论 -
一文搞懂Spring,堪称Spring源码终结者
源码中我们可以学到很多东西,学习别人高效的代码书写、学习别人对设计模式的熟练使用、学习别人对整个架构的布局,等等。如果你还能找出其中的不足,那么恭喜你,你要飞升了!会使用固然重要,但知道为什么这么使用同样重要。从模仿中学习,从模仿中创新。如果你在读Spring源码的过程中有什么疑惑跟不解,那么这两份文档跟这些学习视频一定会对你有所帮助,如果有需要的朋友【直接点击此处】即可免费获取~原创 2023-01-12 16:51:20 · 770 阅读 · 0 评论 -
聊聊Spring中的@Autowired注解
今天来跟大家聊聊简单聊聊@Autowired,Autowired翻译过来为自动装配,也就是。以上是@Autowired的定义,重点看,我们发现@Autowired可以写在:ElementType.CONSTRUCTOR:表示可以写在构造方法上ElementType.METHOD:表示可以写在普通方法上ElementType.PARAMETER:表示可以写在方法参数前ElementType.FIELD:表示可以写在属性上ElementType.ANNOTATION_TYPE:表示可以写在其他注解上。原创 2023-01-11 10:08:14 · 266 阅读 · 0 评论 -
Spring项目中用了这种解耦模式,经理对我刮目相看
不知道大家在项目中有没有遇到过这样的场景,根据传入的类型,调用接口不同的实现类或者说服务,比如根据文件的类型使用 CSV解析器或者JSON解析器,在调用的客户端一般都是用if else去做判断,比如类型等于JSON,我就用JSON解析器,那如果新加一个类型的解析器,是不是调用的客户端还要修改呢?这显然太耦合了,本文就介绍一种方法,服务定位模式来解决,它帮助我们消除紧耦合实现及其依赖性,并提出将服务与其具体类解耦。我们通过使用服务定位器模式实现了一种扩展 Spring 控制反转的绝妙方法。原创 2023-01-10 09:50:46 · 170 阅读 · 0 评论 -
到底什么样的 REST 才是最佳 REST?
说起 REST API,小伙伴们多多少少都有听说过,但是如果让你详细介绍一下什么是 REST,估计会有很多人讲不出来,或者只讲出来其中一部分。今天松哥就来和大家一起来聊一聊到底什么是 REST,顺便再来看下 Spring HATEOAS 的用法。原创 2023-01-10 09:42:44 · 204 阅读 · 0 评论 -
什么? @ConditionalOnMissingBean 你没设置value?
上面2个 哪个更好,肯定是方法二方法一 对之后的扩展不友好,因为 可能之后有需求,根据type 或者 enable 来决定开启哪几个类,这个时候就会发现 结构不清晰,不好拆分方法二 可以 对config类 进行控制,结构上也更加清晰到这 你看看上面的写法还有问题么没错 就上面这短短几行代码还有问题。原创 2023-01-04 10:07:06 · 511 阅读 · 0 评论 -
用这4招优雅的实现Spring Boot 异步线程间数据传递
上述列举了4种方案,这里推荐方案2和方案4,其中两种方案的缺点非常明显,实际开发中也是采用的方案2或者方案4。原创 2023-01-04 09:36:46 · 515 阅读 · 0 评论 -
10天,几万字,源码深度解析之 Spring IOC
IOC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试。有了 IOC 容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,便于测试和功能复用,整个体系结构更加灵活。原创 2023-01-03 14:09:56 · 1168 阅读 · 1 评论 -
SpringBoot系列之数据库初始化-datasource配置方式
在我们的日常业务开发过程中,如果有db的相关操作,通常我们是直接建立好对应的库表结构,并初始化对应的数据,即更常见的情况下是我们在已有表结构基础之下,进行开发;但是当我们是以项目形式工作时,更常见的做法是所有的库表结构变更、数据的初始、更新等都需要持有对应的sql变更,并保存在项目工程中,这也是使用liqubase的一个重要场景;将上面的问题进行简单的翻译一下,就是如何实现在项目启动之后执行相应的sql,实现数据库表的初始化?原创 2022-12-23 10:08:48 · 5175 阅读 · 0 评论 -
SpringBoot一个注解,实现接口防刷
本文介绍一种极简洁、灵活通用接口防刷实现方式、通过在需要防刷的方法加上@Prevent注解即可实现短信防刷;原创 2022-12-20 10:12:47 · 431 阅读 · 0 评论 -
SpringBoot 接口加密解密,新姿势
自定义starter步骤创建工厂,编写功能代码声明自动配置类,把需要对外提供的对象创建好,通过配置类统一向外暴露在resource目录下准备一个名为的文件,以为key,自动配置类为value列表,进行注册。原创 2022-12-17 09:58:43 · 892 阅读 · 0 评论 -
Spring 多线程异步上传图片、处理水印、缩略图
我画了一张简单的示意图,在这个项目中,客户端一次上传10多张图片,每个图片单独上传,等待所有图片上传返回200后,继续执行操作,如果一步一步处理,客户端需等待服务器处理完所有逻辑,这样浪费没必要的时间。工具类获取出了扩展名,因为扩展名对图片处理工具类有用,他通过扩展名识别图片格式,所以这个必须有,如代码,生成了一个使用随机码命名,但带有.png扩展名的临时文件,保存在默认临时路径以供处理。文件的,但如果使用异步处理,肯定是这边线程还没处理完,那边Controller层已经return了,这个。原创 2022-12-10 09:42:57 · 213 阅读 · 0 评论 -
源码深度解析之 Spring IOC
IOC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试。有了 IOC 容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,便于测试和功能复用,整个体系结构更加灵活。理解 IOC 的关键是要明确 “谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,我们浅析一下:谁控制谁,控制什么:传统 Java SE原创 2022-12-07 10:37:41 · 519 阅读 · 0 评论 -
Spring中获取bean的八种方式,你get了几种?
(1)、是Spring里面最底层的接口(最原始的接口),包含了各种Bean的定义,读取bean配置文档,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误,这样有利于检查所依赖属性是否注入。启动后预载入所有的单实例Bean,通过预载入单实例bean ,确保当你需要的时候,你就不用等待,因为它们已经创建好了。是Spring的两大核心接口,都可以当做Spring的容器。原创 2022-11-25 10:17:22 · 466 阅读 · 0 评论 -
SpringBoot 还在用 if 校验参数?那你真的太low了,老司机都是这么玩的
业务需求总是比框架提供的这些简单校验要复杂的多,我们可以自定义校验来满足我们的需求。自定义自定义约束注解// 默认错误消息String message() default "加密id格式错误";// 分组Class原创 2022-11-24 10:30:58 · 437 阅读 · 0 评论 -
Seata源码研读#01-详解配置管理机制
本篇从 Seata 客户端的视角,对 Seata 配置管理机制中关键逻辑进行了梳理,对其有了初步的了解:Seata 的配置管理并没有按照 Spring 的外部化配置机制来实现,其内部对配置源做了独立的抽象,并以单例的方式提供获取配置信息的统一入口,将复杂实现隐藏在其实现的内部:首先会尝试找到名为的配置文件构建一个类型的配置实例,当此文件不存在时,这个配置实例就会读取中的配置信息;从结果来看是可以通过。原创 2022-11-24 10:17:57 · 821 阅读 · 0 评论 -
61 张图,剖析 Spring 事务,就是要干到底
我们再小节一下,文章先介绍了事务的使用示例,以及事务的执行流程。之后再剖析了事务的源码,分为 2 块:先匹配出 louzai 对象所有关于事务的切面列表,并将匹配成功的事务属性保存到缓存;从缓存取出事务属性,然后创建、启动事务,执行业务逻辑,最后提交或者回滚事务。这篇文章,是 Spring 源码解析的第 4 篇,如果之前已经看过 AOP 的源码解析,这篇就要容易很多,但是如果上来就直接肝,可能会有那么一丢丢难度。原创 2022-11-23 16:14:19 · 174 阅读 · 0 评论 -
百度架构师手写万字Spring Security实战笔记,一篇就搞懂
Spring Security是一个强大且高度可定制的安全框架,致力于为Java应用提供身份认证和授权。虽然Spring Security有强大的功能,但它同时也有很高的学习成本。它囊括了身份认证的各种应用场景以及Web安全的大量知识,仅官方参考手册就有数十万字,并且还省略了诸多实现细节。许多开发人员在面对这样的“庞然大物”时无从入手,更因为对其不够了解而在实际项目中不敢轻易采用。原创 2022-11-23 11:44:44 · 310 阅读 · 0 评论 -
SpringBoot 如何快速过滤出一次请求的所有日志?
在现网出现故障时,我们经常需要获取一次请求流程里的所有日志进行定位。如果请求只在一个线程里处理,则我们可以通过线程ID来过滤日志,但如果请求包含异步线程的处理,那么光靠线程ID就显得捉襟见肘了。华为IoT平台,提供了接收设备上报数据的能力, 当数据到达平台后,平台会进行一些复杂的业务逻辑处理,如数据存储,规则引擎,数据推送,命令下发等等。由于这个逻辑之间没有强耦合的关系,所以通常是异步处理。如何将一次数据上报请求中包含的所有业务日志快速过滤出来,就是本文要介绍的。原创 2022-11-22 10:39:33 · 340 阅读 · 0 评论 -
Spring Security 使用JSON格式参数登录的两种方式
在中,默认的登陆方式是以表单形式进行提交参数的。可以参考前面的几篇文章,但是在前后端分离的项目,前后端都是以 JSON 形式交互的。一般不会使用表单形式提交参数。所以,在中如果要使用 JSON 格式登录,需要自己来实现。那本文介绍两种方式使用 JSON 登录。原创 2022-11-21 17:04:19 · 1051 阅读 · 0 评论 -
美团技术官手写的精品SpringBoot笔记,涵盖90%知识点,简直太强了
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。可是老伙计,你会用 Spring 和 SpringBoot,你是否曾想过这样一些问题呢:SpringBoot 只需要依赖 starter 就能整合进一个模块,它是怎么做到的?SpringBoot 只需要编写启动类,打个注解就能拉起一个Web应用,我又没加Tomcat,它咋起来的呢?原创 2022-11-19 10:48:20 · 161 阅读 · 0 评论 -
SpringBoot 接口层统一加密解密
自定义starter步骤创建工厂,编写功能代码声明自动配置类,把需要对外提供的对象创建好,通过配置类统一向外暴露在resource目录下准备一个名为spring/spring.factories的文件,以org.springframework.boot.autoconfigure.EnableAutoConfiguration为key,自动配置类为value列表,进行注册。原创 2022-11-18 09:57:25 · 475 阅读 · 0 评论 -
Spring Boot 实现接口幂等性的 4 种方案
幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。在HTTP/1.1中,对幂等性进行了定义。原创 2022-11-04 10:03:39 · 147 阅读 · 0 评论 -
Spring源码-手写篇-手写Bean配置
xml方式的流程如下:我们可以自己写一个解析器,专门来解析对应的xml文件然后我们来看看需要定义的注解有哪些。类要不要配置为Bean @ComponentBeanName Scope和Primary @Scope @Primary工厂方法 工厂Bean @Bean初始化方法、销毁方法 @PostConstruct @PreDestory构造参数依赖 @Autowired @Value属性依赖 @Qualifier。原创 2022-10-17 13:15:16 · 190 阅读 · 0 评论