
Spring
文章平均质量分 87
程序猿进阶
要做就做第一,就算结果不是第一,也会是一个好成绩。 加油!我的未来不是梦。
展开
-
Spring Boot spring.factories文件详细说明
经常看到 spring.factories 文件,却没有对它进行深入的了解和分析,今天我们就一起揭开面纱看看它的内在。spring.factories 文件是 Spring Boot 自动配置机制的核心部分之一。它位于每个 Spring Boot 自动配置模块的 META-INF 目录下,用于声明该模块提供的自动配置类、条件性配置类、环境后处理器等。以下是对 spring.factories 文件的详细说明:原创 2024-12-27 05:30:00 · 10723 阅读 · 15 评论 -
深入解析 Spring WebFlux:原理与应用
WebFlux 是 Spring Framework 5 引入的一种响应式编程框架,和Spring MVC同级,旨在处理高并发和低延迟的非阻塞应用。这是一个支持反应式编程模型的新Web框架体系。顺便一提,Spring Cloud Gateway在实现上是对Spring WebFlux的拓展。原创 2024-12-23 05:15:00 · 9214 阅读 · 120 评论 -
Spring Bean 的生命周期和获取方式
InitializingBean 接口只有一个函数:afterPropertiesSet()这一阶段也可以在 bean正式构造完成前增加我们自定义的逻辑,但它与前置处理不同,由于该函数并不会把当前 bean对象传进来,因此在这一步没办法处理对象本身,只能增加一些额外的逻辑。执行初始化之后的后置处理器的方法。执行接口规定的初始化。包含了获取实体解析器、验证模式,以及 Document 对象的逻辑,XML 是半结构化数据,XML 的验证模式用于保证结构的正确性,常见的验证模式有 DTD 和 XSD 两种。原创 2024-12-06 05:30:00 · 12016 阅读 · 93 评论 -
Cacheable注解导致线程block
减少getData()方法的调用次数,优化后的一次http请求,平均只需要调用7次getData()方法,并通过压测发现cpu利用率不再异常升高,也不再出现线程block的情况。【1】在业务代码中,尤其是在高qps场景下,需要注意服务调用过程中的临界区,压测作为一种重要的测试手段,通过并发测试可以提高暴露线程安全的问题。【2】在业务多层嵌套的场景中,任何一种方法的不当调用可能就会产生令人难以置信的调用风暴,尤其是在高qps情况下更需要注意,合理减少嵌套层数或者减少调用次数。原创 2024-11-14 05:30:00 · 11541 阅读 · 85 评论 -
Spring 循环依赖
三级缓存中的对象工厂可以确保在需要时创建代理对象,并将其放入二级缓存,从而确保代理对象可以在循环依赖中正确地被引用。时,它需要立即解析所有的构造函数参数,这会导致循环依赖问题。的代理对象来解决循环依赖问题。但从设计和架构的角度来看,尽量避免循环依赖是更好的做法。在需要时延迟创建早期引用,而不是立即创建。可能无法正确地创建代理对象,因为代理对象的创建依赖于完整的。的完全初始化的实例后,完成自身初始化,并放入一级缓存。的引用,所以最终拿到的是一个完整的。的初始化,从而解决循环依赖问题。原创 2024-10-09 05:30:00 · 9497 阅读 · 53 评论 -
Java面试——Spring
【1】用户发送请求至前端控制器。原创 2024-08-30 05:30:00 · 1946 阅读 · 59 评论 -
@Component 注解高端玩法【策略模式】
首先,定义一个接口和它的多个实现类。@Override自动注入所有实现类到Map接下来,在需要使用这些实现类的地方,使用@Autowired注解和一个来自动注入所有实现类。原创 2024-08-05 00:15:00 · 1569 阅读 · 70 评论 -
关于Spring事务管理之默认事务间调用问题
这里用到的事务配置为注解方式, 目前我们项目开发过程中使用配置文件方式, 一般为以下方式。这种方式的事务配置, 更容易引起问题。没有接受到里面抛出的异常, 方法继续执行, 执行结束后, 事务提交。, 默认事务再被调用时, 如外层方法无事务, 自身会新启事务。由事务的传播行为我们知道, 如果将方法配置为默认事务。的时候检测到事务被标记为回滚, 与预期不符, 也就是。, 作为一个独立事务来执行. 由此存在一个问题。出现异常后它将事务标记为回滚。的事务回滚依托在异常之上, 当。, 之后再被调用的方法。原创 2024-04-24 05:00:00 · 2696 阅读 · 91 评论 -
Spring事务那些事
下面列举了各公司框架使用到的亊务传播部分说明,还有些不常用传播行为,因为实际使用的少,大家在网上了解下就行了。传播行为意义表示当前方法必须运行在一个事务中,如果当前存在一个事务,那么该方法运行在这个事务中,否则,将创建一个新的事务新建事务,表示当前方法必须运行在自己的事务中,如果当前存在一个事务,那么这个事务将在该方法运行期间被挂起表示如果当前事务存在,则方法应该运行在一个嵌套事务中。否则,它看起来和看起来没什么俩样。原创 2024-04-05 05:00:00 · 1847 阅读 · 43 评论 -
Spring Native 解放 JVM
放入类路径,就能在目标系统上进行扩展。不幸的是,这会减慢启动时间,而且不会带来任何好处,尤其是对于云原生应用,因为在云原生应用中,服务器运行时和。的多语言能力使得在一个应用程序中混合使用多种编程语言成为可能,同时消除了不同语言间互相调用的成本。虚拟机相比,原生镜像可以在许多场景下降低工作负载,包括微服务,函数式服务,非常适合容器和。因此,需要为每个支持的目标系统进行一次构建,在使用。的替代方案,提供一个能将应用程序打包,并运行在轻量级容器的方案。在运行时进行编译,这样可以在执行应用程序时进行观察和优化。原创 2024-02-11 21:20:05 · 5036 阅读 · 66 评论 -
Spring IOC 源码分析
【1】Spring容器在启动的时候,先会保存所有注册来的Bean的定义信息;■Xml注册■ 注解注册Bean@Service@Component@Bean等等【2】Spring容器会在合适的时机创建bean;■ 用到这个bean的时候,利用getBean创建bean,创建好后保存在容器中。■ 统一创建剩下所有bean的时候,调用:每一个bean的创建完成,都会使用各种后置处理器进行处理,来增强bean的功能:■:处理自动注入;■:来做AOP功能;等等。。。事件监听。原创 2024-01-13 12:00:00 · 2058 阅读 · 39 评论 -
ApplicationContextAware 类
【1】采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化,这样,我们就不能发现一些存在的Spring的配置问题。而则相反,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误。相对于基本的唯一的不足是占用内存空间。当应用程序配置Bean较多时,程序启动较慢。【2】延迟加载,如果Bean的某一个属性没有注入,加载后,直至第一次使用调用getBean方法才会抛出异常;而。原创 2023-12-06 21:30:06 · 1885 阅读 · 59 评论 -
ApplicationRunner 类
在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。给我们提供了两个接口来帮助我们实现这种需求。方法,我们只需要实现这个方法即可。目前我在项目中用的是。是系统启动时传入的参数。原创 2023-12-05 22:56:37 · 1056 阅读 · 33 评论 -
Java Reactor Stream
一、Reactor 概念“具有非阻塞负压功能的异步流处理系统” 的标准以及API。1、Reactive Streams 核心接口2、Flux 与 Mono【1】Flux 对象代表一个包含0-N个元素的响应式序列;【2】Mono 对象代表一个包含0-1个元素的响应式序列;3、Reactor 操作符二、Reacotr 基本原理......原创 2022-04-17 23:49:20 · 2274 阅读 · 7 评论 -
拦截器与过滤器的区别
拦截器和过滤器Filter都是基于思想实现的,用来解决项目中某一类问题的两种“工具”,两者在使用上有时候可能会分不清,希望能够通过本章解决这个痛点。原创 2023-11-15 22:55:12 · 1742 阅读 · 40 评论 -
Spring 事务——源码分析
【事务环境搭建工作】:链接注解 @EnableTransactionManagement:在配置类中添加注解@EnableTransactionManagement,便开启了事务功能。此注解也是了解Spring事务源码的入口。@EnableTransactionManagementpublic class TxConfig {【1】@EnableTransactionManagement 利用 TransactionManagementConfigurationSelector 给容器中导入组件原创 2021-05-11 23:14:09 · 2161 阅读 · 2 评论 -
Spring AOP面向切面编程案例 (注解驱动开发)
AOP(动态代理):指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式;【1】导入 aop 模块;Spring AOP:(spring-aspects);【2】定义一个业务逻辑类(MathCalculator),在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx);【3】定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知 MathCalculator.div 运行到哪里然后执行;通知方法: ■ 前置通知(@Befor..原创 2021-05-11 23:11:09 · 1523 阅读 · 3 评论 -
Spring 的核心组件详解
Spring 总共有十几个组件,但是真正核心的组件只有三个:Core、Context 和 Bean。它们构建起了整个 Spring的骨骼架构,没有它们就不可能有 AOP、Web 等上层的特性功能。一、Spring的设计理念Bean组件是 Spring核心中的重点,Spring 就是面向Bean编程的(Bean Oriented Programming:BOP)就像Object 对OOP的意义一样,没有对象的概念就像没有面向对象的编程,在Spring中没有Bean也就没有Spring存在的意义。我.原创 2021-04-20 12:32:27 · 1972 阅读 · 1 评论 -
Spring 注解整理
一、核心容器【1】@Configuration:告诉 Spring 这是一个配置类(配置类=配置文件)【2】@Bean:给容器中注册一个 Bean ;类型为返回值类型,id 默认是用方法名作为 id 也可以通过 value 属性添加 id(相当于 xml 中的 <bean> 标签),主要用于导入第三方包里面的组件。【3】@ComponentScan:包扫描,只要标注了 @Cotroller、@Service、@Repository、@Componet 等注解便会自动注入此类,exclud原创 2021-04-21 23:06:25 · 1345 阅读 · 8 评论 -
注解式事务解决方案
一、添加事务配置文件:applicationContext-tx.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"原创 2021-04-20 12:43:55 · 2686 阅读 · 7 评论