
spring
文章平均质量分 83
皮皮攻城狮
写博客的目的是记录生活的点点滴滴,与大家共享知识,记录解决每一个小小的问题。
方便我自己,也方便大家!这是初心!
展开
-
Spring Boot 中自动装配机制的原理
这个配置类是放在第三方的 jar 包里面,然后通过 SpringBoot 中的约定优于配置思想,把这个配置类的全路径放在 classpath:/META-INF/spring.factories 文件中。@Enable 注解是模块驱动的意思,我们只需要增加某个@Enable 注解,就自动打开某个功能,而不需要针对这个功能去做 Bean 的配置,@Enable 底层也是帮我们去自动完成这个模块相关 Bean 的注入。它的出现,让开发人员更加聚焦在了业务代码的编写上, 而不需要去关心和业务无关的配置。原创 2024-01-01 17:33:31 · 1212 阅读 · 0 评论 -
Seata 中封装了四种分布式事务模式,分别是: AT 模式, TCC 模式, Saga 模式, XA 模式,
在微服务架构下,由于数据库和应用服务的拆分,导致原本一个事务单元中的多个 DML 操作,变成了跨进程或者跨数据库的多个事务单元的多个 DML 操作,而传统的数据库事务无法解决这类的问题,所以就引出了分布式事务的概念。分布式事务本质上要解决的就是跨网络节点的多个事务的数据一致性问题,业内常见的解决方法有两种强一致性,就是所有的事务参与者要么全部成功,要么全部失败,全局事务协调 者需要知道每个事务参与者的执行状态,再根据状态来决定数据的提交或者回滚!原创 2023-12-28 22:57:37 · 644 阅读 · 0 评论 -
spripng 三级缓存,三级缓存的作用是什么? Spring 中哪些情况下,不能解决循环依赖问题有哪些
三级缓存是用来存储代理 Bean,当调用 getBean()方法时,发现目标 Bean 需要通过代理工厂来创建,此时会将创建好的实例保存到三级缓存,最终也会将赋值好的 Bean 同步到一级缓存中。3.单例的代理 Bean 通过 Setter 注入的情况,不能解决循环依赖问题。4.设置了@DependsOn 的 Bean 的情况,不能解决循环依赖问题。1.多例 Bean 通过 setter 注入的情况,不能解决循环依赖问题。2.构造器注入的 Bean 的情况,不能解决循环依赖问题。原创 2023-12-27 23:16:17 · 682 阅读 · 0 评论 -
Spring 是如何解决循环依赖问题的方案
而 Spring 中设计了三级缓存来解决循环依赖问题,当我们去调用 getBean()方法的时候,Spring 会先从一级缓存中去找到目标 Bean,如果发现一级缓存中没有便会去二级缓存中去找,而如果一、二级缓存中都没有找到,意味着该目标 Bean 还没有实例化。如果不存在循环依赖便会将目标 Bean 存入到二级缓存,否则, 便会标记该 Bean 存在循环依赖,然后将等待下一次轮询赋值,也就是解析。循环的依赖将会导致注入死循环。第二种三者间依赖:A 依赖 B,B 依赖 C,C 又依赖 A,形成了循环依赖。原创 2023-12-27 23:12:06 · 564 阅读 · 0 评论 -
spring事务的实现原理
显然不会生效,因为m1中通过this的方式调用了m2方法,而this并不是代理对象,this.m2()不会被事务拦截器,所以事务是无效的,如果外部直接调用通过UserService这个bean来调用m2方法,事务是有效的,上面代码可以做一下调整,如下,@1在UserService中注入了自己,此时m1中的m2事务是生效的.即相同类里边,A 方法没有事务,B 方法有事务,A 方法调用 B 方法,则 B 方法的事务会失效,这点尤其要注意,因为代理模式只拦截通过代理传入的外部方法调用,所以自调用事务是不生效的。原创 2023-11-29 20:57:46 · 1011 阅读 · 1 评论 -
Spring的事务传播行为
如果 handle2 方法本身是有事务的,则 handle1 方法就会加入到 handle2 方法所在的事务中,这样两个方法将处于同一个事务中,一起成功或者一起失败(不管是 handle2 还是 handle1 谁抛异常,都会导致整体回滚)。,如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。原创 2023-11-29 20:55:29 · 1163 阅读 · 1 评论 -
Spring MVC常用的注解, Controller注解的作用,RequestMapping注解的作用 @ResponseBody注解的作用
Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。原创 2023-11-28 20:26:58 · 1315 阅读 · 0 评论 -
spring Cloud在代码中如何应用,erueka 客户端配置 和 服务端配置,Feign 和 Hystrix做高可用配置
13、通过配置文件找到namespace,忽略springcloud的配置。18、最初复制实例信息到Eureka服务器所需的时间。19、同步实例变更信息到Eureka服务到周期。3、Eureka Server等待超时时间。16、压缩Eureka Server的数据。20、从Eureka服务器拉取服务信息周期。21、Eureka Server地址。2、Eureka 连接超时时间。4、拉取Eureka注册信息。5、注册自身到Eureka。15、注册时使用的IP地址。1、Eureka 启禁用。原创 2023-11-27 20:27:14 · 1219 阅读 · 1 评论 -
通俗易懂的spring Cloud;业务场景介绍 二、Spring Cloud核心组件:Eureka 、Feign、Ribbon、Hystrix、zuul
先来给大家说一个业务场景,假设咱们现在开发一个电商网站,要实现支付订单的功能创建一个订单后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付扣减相应的商品库存通知仓储中心,进行发货给用户的这次购物增加相应的积分针对上述流程,我们需要有: 订单服务、库存服务、仓储服务、积分服务。用户针对一个订单完成支付之后,就会去找订单服务,更新订单状态订单服务调用库存服务,完成相应功能订单服务调用仓储服务,完成相应功能订单服务调用积分服务,完成相应功能至此,整个支付订单的业务流程结束。原创 2023-11-27 20:19:57 · 1534 阅读 · 1 评论 -
spring Cloud配置中心 Nacos 1.搭建服务端 2.搭建客户端 3.动态刷新 4.nacos config高可用 5.nacos config高级配置
微服务-配置中心微服务架构中存在很多服务,每个服务都有自己的配置文件,这些配置文件如果集成在服务中,也是难以维护的,于是便可以使用配置中心来管理这些配置文件。1.搭建服务端nacos服务端搭建是十分容易的,只需下载+配置+启动就行,参考注册中心这篇:点击前往建议:使用mysql作为持久化。客户端即每个配置要被管理的服务,服务的搭建还如往常一样搭建,只不过配置文件发生一些变化,以下就认为你已经创建了一个服务模块/项目,并以此起步。1.客户端引入nacos config依赖:2.创建一个bootstrap原创 2023-11-27 20:13:53 · 1129 阅读 · 0 评论 -
注册中心 Eureka; Ribbo - 负载均衡; 负载均衡策略 ;注册中心的配置集群, 创建 namespace,配置命名空间,nacos添加配置文件,从nacos拉取配置等相关的操作
一个服务可以拥有多个实例,如:provider 的 8081 和 8082,如果这些实例分布于全国不同的机房,如:provider:8081 在成都机房、provider:8082 在重庆机房,Nacos就将同一机房内的实例 划分为一个。这就是负载均衡算法选择的。微服务相互之间访问时,访问本地的速度更快,所以应该尽可能访问相同集群的实例,只有当本集群内存不够时,才去访问其他集群。而,Ribbon就是通过。Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。原创 2023-11-27 20:09:03 · 992 阅读 · 1 评论 -
Spring Cloud,注册中心,配置中心,原理详解
先来给大家说一个业务场景,假设咱们现在开发一个电商网站,要实现支付订单的功能创建一个订单后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付扣减相应的商品库存通知仓储中心,进行发货给用户的这次购物增加相应的积分针对上述流程,我们需要有: 订单服务、库存服务、仓储服务、积分服务。用户针对一个订单完成支付之后,就会去找订单服务,更新订单状态订单服务调用库存服务,完成相应功能订单服务调用仓储服务,完成相应功能订单服务调用积分服务,完成相应功能至此,整个支付订单的业务流程结束。原创 2023-11-27 19:58:43 · 1816 阅读 · 0 评论 -
注解原理是什么 Spring MVC常用的注解有哪些?
Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。原创 2023-11-27 19:38:15 · 1204 阅读 · 0 评论 -
springMVC,什么是Spring MVC? Spring MVC的主要组件? springMVC工作原理/流程 MVC框架
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。Spring MVC的优点(1)可以支持各种视图技术,而不仅仅局限于JSP;(2)与Spring框架集成(如IoC容器、AOP等);原创 2023-11-27 19:34:35 · 1206 阅读 · 0 评论 -
springBoot常见的问题
Swagger 广泛用于可视化 API,使用 Swagger UI 为前端开发人员提供在线沙箱。Swagger 是用于生成 RESTful Web 服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过 Swagger 正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger消除了调用服务时的猜测。原创 2023-11-26 16:14:55 · 1003 阅读 · 2 评论 -
springBoot的实现原理;SpringBoot是什么;使用SpringBoot的核心功能;springBoot核心注解以及核心配置文件
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:(1)面向对象的配置。原创 2023-11-26 15:28:11 · 1383 阅读 · 5 评论 -
Spring的依赖注入,依赖注入的基本原则,依赖注入的优势
所谓依赖注入(Dependency Injection),即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。依赖注入之所以更流行是因为它是一种更可取的方式:让容器全权负责依赖查询,受管组件只需要暴露JavaBean的setter方法或者带参数的构造器或者接口,使容器可以在初始化时组装对象的依赖关系。构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。原创 2023-11-26 12:47:14 · 702 阅读 · 3 评论 -
Spring面向切面编程(AOP);Spring控制反转(IOC);解释一下Spring AOP里面的几个名词;Spring 的 IoC支持哪些功能
OOP面向对象编程,允许开发者定义纵向的关系,但并适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用。AOP(Aspect-Oriented Programming),一般称为面向切面编程,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理等。原创 2023-11-26 12:19:42 · 1149 阅读 · 1 评论 -
Spring 七大组件
MVC框架是一个全功能的构建Web应用程序的MVC实现。Spring的MVC框架提供清晰的角色划分:控制器、验证器、命令对象、表单对象和模型对象、分发器、处理器映射和视图解析器。Spring 中的DAO提供一致的方式访问数据库,不管采用何种持久化技术,Spring都提供一直的编程模型。Web层使用Web层框架,可选的,可以是Spring自己的MVC框架,或者提供的Web框架,如Struts、Webwork、tapestry和jsf。Spring为所有的这些框架提供了模板之类的辅助类,达成了一致的编程风格。原创 2023-11-24 21:10:56 · 573 阅读 · 1 评论 -
spring 是如何开启事务的, 核心原理是什么
事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略。原创 2023-11-23 22:08:32 · 746 阅读 · 2 评论 -
Spring Beans;Spring Bean的生命周期;spring Bean的作用域,spring处理线程并发问题
Spring beans 是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中 的形式定义。原创 2023-11-23 21:42:21 · 1116 阅读 · 1 评论 -
spring 的事务隔离;Spring框架的事务管理的优点
发生幻读的原因也是另外一个事务新增或者删除或者修改了第一个事务结果集里面的数据,同一个记录的数据内容被修改了,所有数据行的记录就变多或者变少了。,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(会造成幻读),MySQL 的默认级别;为不同的事务API 如 JTA,JDBC,Hibernate,JPA 和JDO,提供一个不变的编程模式。聊一聊spring事务的隔离,事务的隔离对于一个系统来说也是非常重要的,直接上干货!:是指在一个事务内,多次读同一数据。原创 2023-11-23 21:34:41 · 932 阅读 · 1 评论 -
Spring 事务失效的7种场景, 事务失效后如何进行处理
显然不会生效,因为m1中通过this的方式调用了m2方法,而this并不是代理对象,this.m2()不会被事务拦截器,所以事务是无效的,如果外部直接调用通过UserService这个bean来调用m2方法,事务是有效的,上面代码可以做一下调整,如下,@1在UserService中注入了自己,此时m1中的m2事务是生效的.即相同类里边,A 方法没有事务,B 方法有事务,A 方法调用 B 方法,则 B 方法的事务会失效,这点尤其要注意,因为代理模式只拦截通过代理传入的外部方法调用,所以自调用事务是不生效的。原创 2023-11-23 21:29:01 · 1297 阅读 · 0 评论 -
Spring事务的实现方式和实现原理;事务声明的方式,Spring的事务传播行为,spring事务的实现原理
数据库事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么一起成功,要么一起失败,是一个不可分割的工作单元。在我们日常工作中,涉及到事务的场景非常多,一个 service 中往往需要调用不同的 dao 层方法,这些方法要么同时成功要么同时失败,我们需要在 service 层确保这一点。原创 2023-11-23 21:19:57 · 1021 阅读 · 1 评论 -
Spring AOP
今天来和大家分享spring AOP本章内容: 自动生成Spring框架 什么是AOP AOP中的术语 Spring实现AOP的四种方式本章重点: AOP中的术语 Spring实现AOP的四种方式一、什么是AOP面向方面/切面的编程:将程序中的交叉业务逻辑(公用代码)提取出来,称为切面,将这些切面动态的织入到目标对象,生成一个新的代理对象的过程;把程序划分为两...原创 2020-01-07 15:35:53 · 152 阅读 · 0 评论 -
Spring的注入方式
Spring的注入方式本章内容: 注入类型 bean的范围 内部bean的使用 自动装配本章重点: 注入类型 bean的范围注入方式1、 setter(重要)2、 构造方法3、 接口注入(可以忘记)(一) setter注入类型Setter Injection就是在bean中使用setXXX方法进行注入来在bean类中,成员属性需要setXXX方法如下:...原创 2019-12-27 15:48:08 · 136 阅读 · 0 评论 -
Spring
Spring入门本章内容: Spring是什么 Spring的好处 Spring包含的模块 名词解释 小结 搭建sping的运行环境本章重点: 搭建sping的运行环境Spring是什么?Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。...原创 2019-12-27 14:45:54 · 270 阅读 · 0 评论