rabbitmq spring rpc
Spring Event 观察者模式, 业务解耦神器
观察者模式在实际开发过程中是非常常见的一种设计模式。 Spring Event的原理就是观察者模式,只不过有Spring的加持,让我们更加方便的使用这一设计模式。 一、什么是观察者模式 概念: 观察者模式又叫发布-订阅模式。 发布指的是当目标对象的状态改变时,它就向它所有的观察者对象发布状态更改的消 ......
既然有HTTP协议,为什么还要有RPC?
我想起了我刚工作的时候,第一次接触RPC协议,当时就很懵,我HTTP协议用得好好的,为什么还要用RPC协议? 于是就到网上去搜。 不少解释显得非常官方,我相信大家在各种平台上也都看到过,解释了又好像没解释,都在用一个我们不认识的概念去解释另外一个我们不认识的概念,懂的人不需要看,不懂的人看了还是不懂 ......
RabbitMQ、RocketMQ和Kafka的不同之处
RabbitMQ、RocketMQ和Kafka是三种常见的消息队列系统,它们在设计和使用方面有一些不同之处: 架构设计: RabbitMQ:RabbitMQ是一个基于AMQP(高级消息队列协议)的开源消息队列系统,采用的是传统的Broker架构模式,其中包括生产者、消费者和中间件(Broker)。 ......
Spring Boot构建web项目01
配置: 破解版IDEA2019.3.3 Maven--3.6.3 java--1.8(8) jdk--8 打开IDEA,new 一个 project,选择Spring Initializr 改写maven管理和java版本8 选择web项目 添加指定父级工程信息和java版本依赖 <modelVer ......
Spring IOC(控制反转)和DI(依赖注入)
IOC(控制反转) IOC-Inversion of Control,即控制反转。它不是什么技术,而是一种设计思想。 传统的创建对象是通过new方式来创建的,而Spring是通过IOC容器进行创建的,把对象的创建,初始化,销毁等等工作交给容器。 DI(依赖注入) 依赖注入是一种设计模式。其主要是 ......
【IOC,AOP】spring的基础概念
IOC 控制反转 对象的创建控制权转交给外部实体,就是控制反转。外部实体便是IOC容器。其实就是以前创建java对象都是我们new一下,现在我们可以把这个new交给IOC容器来做,new出来的对象也会交由IOC容器来管理。这个new出来的对象则称为Bean。 IOC容器 负责创建和初始化并存放Bea ......
消息队列 RabbitMQ
发布者:生产者,消息的发送方。连接:网络连接。Channel:信道,多路复用连接中的一条独立的双向数据流通道。Exchange:交换器(路由器),负责消息的路由到相应队列。类型:direct、fanout、topicBinding:队列与交换器间的关联绑定。消费者将关注的队列绑定到指定交换器上,以便 ......
Spring Boot - 讨论为什么 Service 层需要写 Service 接口再写其实现类 impl?
接口的概念 接口(interface)是一种在面向对象编程中非常重要的概念,它有助于提高程序的可扩展性和灵活性。以下是接口如何体现程序高扩展性的几个方面: 分离接口与实现:接口定义了类应该具备的行为,但不提供具体的实现细节。这使得你可以将接口与其实现分离开来。当你需要更改或扩展程序的功能时,你可以创 ......
【Spring boot】 全局配置文件application.properties
默认使用以下 2 种全局的配置文件,在 Spring Boot 启动时被自动读取 application.properties application.yml properties的语法如下: 使用properties的key=value形式 使用层级递进关系。 从最高层到最低层逐个低级,中间使用点 ......
go-zero 生成RPC
1.编写message.proto文件 syntax = "proto3";package pb;// 生成golang 代码后的包名option go_package ="./pb";enum Status{ UNSPECIFIED=0; SUCCESS=1; FAILED=2;}message ......
面试官问Spring 启动流程,把这篇文章甩给他!
大家好,我是三友~~ 今天来扒一扒Spring在启动过程中核心的12个步骤 之所以来写这篇文章,主要是来填坑的 之前在三万字盘点Spring 9大核心基础功能这篇文章的末尾中给自己挖了一个坑,提了一嘴有机会要写这么一篇文章 但是由于Spring启动过程并不复杂,所以后面就没写了 不过,好巧不巧,刚刚 ......
关于Spring i18n国际化 报错No message found under code * for locale 'zh_CN'.的解决方案
第一步 创建资源文件 国际化文件命名格式:基本名称 _ 语言 _ 国家.properties 这里我建了两个配置文件,一个是zh_CN中文的,一个是en_GB英文的,然后在里面随便写点测试文本语句 第二步 bean.xml spring配置文件 1 <?xml version="1.0" encod ......
springBoot spring6 无法加载 thymeleaf的,在html页面中无法智能感知 th:这些
网上所有的坑我都试过了,还是无法解决问题, @Controller public class SellController { @RequestMapping("/test01") /* @ResponseBody */ public String index(){ return "test01"; ......
Spring Boot - Parameter 0 of constructor in com.example.iocdi.controller.UserController required a single bean, but 2 were found
问题描述 如上图所示,在加入了 @MapperScan 注解之后就出现了这个问题。 file:[src/java/config/MybatisConfig.java] @Configuration @MapperScan("com.example.iocdi") public class Mybat ......
spring boot文件的上传和下载后端的实现
文件上传 文件上传,也称为upload,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。 前端介绍 1.简单html页面 <form method="post" action="/comm ......
k8s集群-spring cloud 集成seata的时候:can not register RM,err:can not connect to services-server.
背景说明 seate和其他微服务在k8s集群中部署,都在同一个命名空间。注册到nacos的同一个命名空间 seate是官方提供,无改动 k8s中部署情况: 报错提示 core服务的报错内容: 2023-09-12 11:07:06.524 ERROR 7 [eoutChecker_2_1] i.s. ......
rabbitmq Exception (504) Reason: \"channel id space exhausted\
使用go的包:github.com/rabbitmq/amqp091-go 出现报错:get mq channel error {"error": "Exception (504) Reason: \"channel id space exhausted\""} ctx := context.Bac ......
SpringCloud为啥要采用HTTP,不采用RPC
1、首先SpringCloud开启WEB服务依赖于Tomcat,Tomcat内部采用HTTP协议,开发者编写JSON作为资源传输和响应,可以更加能灵活处理业务数据。 2、RPC基于TCP协议,客户端和服务端需要三次握手,四次挥手进行数据传输。TCP是数据传输层,传输协议统一由服务端进行编写,进行二进 ......
为啥Spring Boot 提倡使用依赖注入(Dependency Injection)的设计模式
Spring Boot 提倡使用依赖注入(Dependency Injection)的设计模式,这种模式的主要目的是解耦和提高代码的可测试性、可维护性和可扩展性。以下是注入的一些优点: 1.解耦和模块化:通过使用依赖注入,你可以将不同的模块解耦,它们之间通过接口进行交互而不是直接依赖具体的实现类。这 ......
Spring Bean 的作用域(Bean Scope)
前言 大家好,我是 god23bin,今天我们来聊一聊 Spring 框架中的 Bean 作用域(Scope)。 什么是 Bean 的作用域? 我们在以 XML 作为配置元数据的情况下,进行 Bean 的定义,是这样的: <bean id="vehicle" class="cn.god23bin.d ......
Spring 注入集合
使用<property>标签的value属性配置原始数据类型和ref属性配置对象引用的方式来定义Bean配置文件。这两种情况都涉及将单一值传递给Bean。那么如果您想传递多个值,例如Java集合类型,如List、Set、Map和Properties怎么办?为了处理这种情况,Spring提供了四种类型 ......
Spring集成线程池
在Spring中,可以使用TaskExecutor接口来集成线程池。以下是一个示例代码,演示如何在Spring中配置和使用线程池: 1. 首先,添加依赖项,以使用Spring的线程池支持。在Maven项目中,可以在pom.xml文件中添加以下依赖项: <dependencies> <!-- 其他依赖 ......
如何理解Spring Boot中的Starters,以及Starter的工作原理
如何理解Spring Boot中的Starters Starters可以理解为启动器,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。 ......
rabbitmq详细实例
1. 概述 RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。 FROM 《维基百科 —— RabbitMQ》 Rabbit ......
简单介绍 Spring MVC 的核心组件
DispatcherServlet 和九大组件(按使用顺序排序的): 组件 说明 DispatcherServlet Spring MVC 的核心组件,是请求的入口,负责协调各个组件工作 MultipartResolver 内容类型( Content-Type )为 multipart/* 的请求的 ......
Spring 事务
Spring 事务实现方式有哪些 编程式 优点:灵活 缺点:麻烦,难以维护 声明式 加注解 Spring的事务管理有什么优点 支持声明式事务管理 提供跨不同事务api的一致事务模型 传播规则 借用 别人的的图片方便记忆 支持当前事务的“女生”,这里的事务指的是“房子”,它分为 3 种(普通型女生): ......
Spring中@Autowired、@Qualifier、@Resource、@Primary、@Inject注解的区别
@Primary注解在Spring框架中用于解决自动装配冲突。当存在多个类型相同的Bean时,如果没有使用@Qualifier注解或者@Qualifier注解没有指定Bean的名称,Spring框架将无法判断应该使用哪个Bean进行注入。此时,可以使用@Primary注解来指定默认的Bean。被@P ......
spring和springboot注解的使用
spring和springboot注解的使用 首先看一下ElementType取值范围: //用于描述类、接口(包括注解类型) 或enum声明 TYPE, //用于描述域 FIELD, //用于描述方法 METHOD, //用于描述参数 PARAMETER, //用于描述构造器 CONSTRUCTO ......
Spring 框架中用到了哪些设计模式
单例,spring的bean的scope默认就是单例 工厂,例如beanfactory,ApplicationContext创建对象 代理,aop使用了代理 模板,以xxxtemplate结尾的都是用到了模板模式,例如jdbc,redis,rabbit~ 剩下的 包装器设计模式 观察者模式 适配器模 ......
Spring 中的单例 bean 的线程安全问题
线程安全问题是由静态变量引起的,如果只是对静态变量读取的话,没有线程安全问题,如果有写入的话,就会导致线程安全问题 bean可以分为两种,一种是有状态,一种没有状态 状态可以认为是实例变量,可以保存数据 如果没有状态,也就没有线程安全问题,使用sigleton范围,提高性能 如果有状态,使用prot ......