spring
文章平均质量分 95
智慧zhuhuix
这个作者很懒,什么都没留下…
展开
-
手把手教你通过SpringBoot实现邮箱注册码验证
一、前言注册一个系统成为用户,一般会要求用户留下一个邮件地址作为联系方式,就象我们去银行开户时银行会让我们留个手机号码一样。为了证明注册的邮箱地址是本人的,系统会向邮箱发送一串验证码,用户收取该验证码后在注册页面上输入验证码连同其他信息发往后台进行验证。...原创 2021-08-17 13:28:06 · 13952 阅读 · 7 评论 -
Spring Cloud Alibaba生态探索:实战RocketMQ
文章目录背景一、RocketMQ介绍二、RocketMQ安装部署三、RocketMQ控制台安装四、RocketMQ的使用4.1 发送消息4.2 消费消息小结背景在微服务架构下,微服务之间除了通过HTTP/RPC方式通信外,还可以通过消息通信。消息通信的优点是降低了服务之间的相互耦合性,缺点是通信非实时。比如用户在电商平台下单成功后,平台会通过消息通信的方式发送短信通知,消息通知与下单交易过程是异步的,非实时的。一、RocketMQ介绍RocketMQ是一个低延迟、高可靠、易于使用的分布式消原创 2020-09-29 15:27:00 · 1728 阅读 · 2 评论 -
云服务器部署微服务,Nacos注册地址及Sentinel监控地址为内网IP的解决办法
背景微服务一般会部署到多台阿里云服务器或腾讯云服务器。在默认情况下,注册到Nacos、Sentinel的都是内网IP地址。如果微服务A通过注册中心调用微服务B,由于微服务A从Nacos注册中心获取到的是微服务B所在服务器的内部IP, 导致无法进行访问。Sentinel控制台监控的微服务的地址为内网IP,同样无法获取相应信息。解决方案在微服务项目中增加bootstrap.yml系统级配置文件,在Nacos及Sentinel配置中指定云服务器的公网IP。server: port: 90原创 2020-09-27 13:57:11 · 4094 阅读 · 0 评论 -
Spring Cloud Alibaba生态探索:Gateway+Nacos实现动态路由
文章目录背景动态路由实现方式1. 增加Nacos Config的Jar包依赖2. 增加系统级引导配置3. 实现动态路由的数据加载4. 添加Nacos路由配置5. 动态路由测试小结背景在上篇文章《Spring Cloud Alibaba生态探索:微服务API网关》中,我们基于Spring Cloud Gateway实现了微服务统一网关。但作为所有微服务请求的入口,路由规则的静态设置是满足不了生产环境的需求的,所以实现动态路由是非常有必要的。本文将会介绍 Spring Cloud Gateway及Na原创 2020-09-25 16:25:30 · 1911 阅读 · 2 评论 -
Spring Cloud Alibaba生态探索:微服务API网关
文章目录背景微服务API网关Spring Cloud GateWay商品微服务微服务API网关网关运行网关流量控制小结背景微服务架构中,每个服务都只会完成特定领域的功能,且都是独立部署的,比如说电商微服务架构中的商品服务、订单服务、库存服务、支付服务等。客户端为了完成一笔交易,需要向多个微服务发起多次请求,增加了网络通信的成本及客户端处理的复杂性。同时每个微服务需要实现鉴权功能,微服务组件越多,重复的操作越频繁。不同的微服务可能会采用不同的协议,比如HTTP,RPC等。客户端针对各类协议,也需要原创 2020-09-23 17:02:33 · 412 阅读 · 0 评论 -
Spring Cloud Alibaba生态探索:Dubbo集成Sentinel实现流量控制
文章目录背景一、项目框架二、微服务公共接口三、微服务提供者四、微服务调用者五、启动微服务六、使用JMeter测试微服务6.1 创建微服务测试项目6.2 流量控制总结背景在上篇文章《Spring Cloud Alibaba生态探索:Dubbo整合Nacos实现微服务》中我们研究了以Dubbo为RPC组件,Nacos作为服务注册中心,应该如何进行搭建微服务。本文将继续对Spring Cloud Alibaba生态进行探索:Dubbo集成Sentinel实现流量控制。一、项目框架采用IDEA和M原创 2020-09-21 15:34:11 · 942 阅读 · 1 评论 -
Spring Cloud Alibaba生态探索:Dubbo整合Nacos实现微服务
文章目录背景一、基础框架二、微服务公共接口三、微服务提供者四、微服务调用者五、微服务测试小结背景在上篇文章《Spring Cloud Alibaba微服务生态的基础实践》中,我们初步了解了Spring Cloud Alibaba微服务生态体系,并动手实践了Nacos服务治理组件的基础应用。本篇文章将继续研究以Dubbo为RPC组件,Nacos作为服务注册中心,应该如何进行搭建微服务。一、基础框架采用IDEA和Maven多模块进行项目搭建父目录版本管理(pom.xml):&l原创 2020-09-19 11:58:37 · 524 阅读 · 0 评论 -
Spring Cloud Alibaba微服务生态的基础实践
文章目录一、背景二、初识Spring Cloud Alibaba三、Nacos的基础实践3.1 安装Nacos并启动服务3.2 建立微服务并向Nacos注册服务3.3 建立微服务消费者进行服务调用3.4 Nacos小结四、Sentinel的基础实践4.1 安装Sentinel监控4.2 通过Sentinel对微服务提供方进行流量控制4.2.1 通过JMeter模拟高并发流量4.2.2 设置流控规则进行流量控制4.2.3 设置降级规则进行流量控制4.3 通过Sentinel对微服务调用方进行流量控制4.3.1原创 2020-09-16 14:58:20 · 379 阅读 · 1 评论 -
实战Spring Cloud之流量控制组件Sentinel
文章目录背景一、Sentinel是什么1.1 安装Sentinel控制台二、创建微服务2.1 创建微服务工程项目2.2 向Nacos服务中心注册微服务2.3 编写微服务业务逻辑2.4 启动微服务,通过Sentinel控制台进行监控三、微服务的流量控制3.1 通过JMeter模拟高并发流量3.2 设置流控规则进行流量控制3.2 设置降级规则进行流量控制四、在微服务调用方进行流量控制4.1 创建微服务调用者4.1.1 加入OpenFeign组件4.1.2 项目配置4.1.3 主启动类增加注解4.1.4 增加微服原创 2020-09-15 15:07:18 · 1405 阅读 · 2 评论 -
实战Spring Cloud 微服务容错保护Hystrix
文章目录背景一、微服务容错保护的措施1.1 服务熔断1.2 服务降级Spring Cloud Hystrix二、实战Hystrix2.1 引入Hystrix依赖2.2 开启Hystrix支持2.3 配置Hystrix2.4 在微服务调用接口中增加服务容错保护2.5 启动后台微服务进行测试服务可用性2.6 关闭后台微服务测试熔断处理小结背景由于网络或者自身的原因,微服务并不能保证服务百分之百可用。对不可用的微服务反复重试调用,会增加服务器的负载,严重的情况下会导致该服务瘫痪。调用相互依赖的微服务而出现原创 2020-09-14 16:36:06 · 504 阅读 · 0 评论 -
实战Spring Cloud之OpenFeign组件
文章目录背景一、OpenFeign二、服务调用客户端加入OpenFeign组件2.1 引入依赖2.2 检查项目配置2.3 主启动类增加注解2.4 增加微服务接口2.5 修改消费者调用程序2.6 运行消费端,并打开HttpClient工具进行测试小结背景在实战Spring Cloud之Nacos替换Eureka这篇文章中,我们通过RestTemplate +Ribbon完成了客户端对在Nacos服务中心中注册的商品信息服务的调用。在本文中我们将实战Spring Cloud OpenFeign组件,进行原创 2020-09-13 17:04:16 · 750 阅读 · 0 评论 -
实战Spring Cloud之Nacos替换Eureka
文章目录背景一、Nacos二、安装Nacos三、Nacos Discovery Client替换Eureka Client四、消费者程序通过Nacos实现服务调用小结背景在《实战Spring Cloud微服务治理组件Eureka》这篇文章中,我们运用了Spring Cloud Netflix 的Eureka组件,进行了微服务治理框架的搭建。但不幸的是, Eureka 2.0 的开源工作已经停止,我们不得不寻找另外一个微服务注册及发现框架来替换Eureka.一、Nacos在2018年 6 月原创 2020-09-12 08:33:48 · 3577 阅读 · 0 评论 -
Spring Cloud Ribbon实现客户端负载均衡
文章目录背景一、搭建Eureka服务治理环境二、创建服务集群三、客户端调用服务四、自定义负载均衡策略小结背景负载方案分为两种:一种是集中式负载均衡,在服务调用者和服务提供方之间使用独立的代理方式进行负载处理,比如lvs+nginx方案。另一种则是客户端自己做负载均衡,服务调用者可根据自己的情况灵活做负载,Ribbon就属于这种情况。一、搭建Eureka服务治理环境创建Eureka服务器创建服务提供方创建服务调用者以上请参考《实战Spring Cloud微服务治理组件Eureka》原创 2020-09-09 14:18:46 · 203 阅读 · 0 评论 -
实战Spring Cloud微服务治理组件Eureka
文章目录背景一、Eureka Server搭建1.1 创建Spring Cloud工程1.2 修改启动类1.2 增加Eureka配置1.3 启动Eureka服务器二、搭建Eureka服务提供者2.1 创建商品服务项目2.2 修改启动类2.2 增加Eureka Client配置2.3 编写商品服务程序2.4 启动商品服务三、搭建Eureka服务消费者3.1 创建用户服务项目3.2 修改启动类3.3 配置Eureka消费者3.4 创建Restful测试接口,在接口中调用商品微服务3.5 调用Restful接口进原创 2020-09-08 11:12:04 · 518 阅读 · 0 评论 -
Spring完整揭秘(十四):SpringMVC之RequestMappingHandlerMapping工作流程
UML图时序图工作流程容器将RequestMappingHandlerMapping组件注册入容器的时候,监测到了InitializingBean接口,注册完成后会执行afterPropertiesSet方法;afterPropertiesSet方法会调用父类AbstractHandlerMethodMapping的afterPropertiesSet方法,然后调用initHandlerMethods方法,此方法会首先获取容器中所有bean的beanName,然后循环调用processCand原创 2020-08-21 15:03:03 · 607 阅读 · 0 评论 -
Spring完整揭秘(十三):SpringMVC核心DispatcherServlet详解
文章目录1、DispatcherServlet是什么2、DispatcherServlet的作用3、DispatcherServlet的工作流程4、DispatcherServlet实现详解5 DispatcherServlet的doDispatch处理过程1、DispatcherServlet是什么DispatcherServlet是Spring MVC最核心的类,是前端控制器(Front Controller)设计模式的实现,正是这个核心组件接收所有传输到Web应用的HTTP请求。2、Disp原创 2020-08-20 13:54:07 · 5252 阅读 · 0 评论 -
Spring完整揭秘(十二):通过IDEA创建SpringMVC项目
1、创建spring项目根据1,2,3顺序进行操作2、输入项目名称3、下载jar包4、确定项目路径5、生成项目结构下载tomcat解压到文件夹下原创 2020-08-19 10:35:03 · 699 阅读 · 0 评论 -
IntelliJ IDEA 配置Jetty启动SpringMvc项目
下载jetty https://github.com/eclipse/jetty.project/releasesIDEA配置下拉框选择Edit Configurations…选项:增加Jetty服务器在弹出窗口中新增一个Jetty配置项配置参数配置Jetty的一些参数:设置好Name,点击Application Server右侧的Configure…按钮,在弹出窗口中,在Jetty Home中选择Jetty根目录路径,会自动带出其余的参数额外勾选jmx.mod在原创 2020-08-17 15:49:48 · 1344 阅读 · 0 评论 -
Spring完整揭秘(十一):通过三张图认识Spring MVC的架构
一、Spring MVC处理请求的流程图二、Spring MVC处理请求的结构图三、Spring MVC时序图原创 2020-08-14 17:08:01 · 388 阅读 · 0 评论 -
Spring完整揭秘(十):通过实际案例摸清楚Spring事务传播的行为
文章目录事务传播案例准备案例解析1、无事务2、 Propagation.REQUIRED3. Propagation.SUPPORTS4. Propagation.MANDATORY5. Propagation.REQUIRED_NEW6. Propagation.NOT_SUPPORTED7. Propagation.NEVER8. Propagation.NESTED注意点事务传播对于Spring事务传播的七大行为,我们往往还停留在一些概念上,比如下面这张表:定义说明原创 2020-08-13 16:00:08 · 249 阅读 · 0 评论 -
Spring完整揭秘(九):Spring的事务管理
文章目录认识事务Spring事务架构TransactionDefinition 接口:TransactionStatus 接口PlatformTransactionManager接口Spring 声明式事务管理基于 @Transactional 的声明式事务管理@Transactional声明式事务的例子认识事务以可控的方式对数据资源进行访问的一组操作称为事务;在事务执行前后,数据资源所承载的系统状态始终处于正确的状态。事务特性(ACID)原子性(Atomicity):事务包括的全部操作是一个整原创 2020-08-12 15:43:45 · 200 阅读 · 0 评论 -
Spring完整揭秘(八):Spring ORM 同时集成JPA与Mybatis
文章目录ORMSpring ORMSpring ORM 同时集成JPA与Mybatis一、创建一个SpringBoot项目二、建立用户信息登记表三、Web应用项目集成mysql四、添加Spring Data JPA和Mybatis依赖五、添加数据表映射实体类六、创建数据接口层6.1 声明JPA接口6.2 声明MyBatis接口七、创建业务服务层八、创建控制器九、设计视图模板9.1 设计一个用户列表的视图模板9.2 设计一个提交用户信息的表单模板9.3 设计一个用户模糊查找页面模板十、运行应用10.1用户列表原创 2020-08-11 14:58:43 · 871 阅读 · 0 评论 -
Spring完整揭秘(七):使用Spring JDBC访问数据
文章目录DAO模式DAO模式示例JDBC API基于 Spring JdbcTemplate的数据访问层实现将SQLException转译到DataAccessExceptionSpringBoot使用JdbcTemplate的配置JdbcTemplate的常用方法完整案例DAO模式为了统一和简化软件系统的数据访问操作,在常规的Java软件系统分层中,都会定义DAO数据访问层,使用该模式,既可以分离业务逻辑与数据访问,又可以屏蔽各种数据底层操作的差异。DAO模式示例使用DAO模式访问用户数据原创 2020-08-10 14:58:48 · 233 阅读 · 0 评论 -
十二时辰手把手教你入门Spring
背景本文章通过实战的方式掌握Spring的企业级开发功能,适合刚开始学习Spring框架的Java开发人员快速上手。第1时辰、Spring起步 第2时辰、基于SpringMVC开发web应用第3时辰、实现数据持久化第4时辰、使用Spring Data实现数据持久化第5时辰、使用Spring Security安全框架保护web应用第6时辰 、Spring的配置属性第7时辰、Spring集成REST API服务第8时辰、Spring集成JavaMailSender实现邮件发送第9时辰、Sp原创 2020-08-07 08:56:12 · 492 阅读 · 0 评论 -
Spring完整揭秘(六):使用maven建立Spring AOP 的完整案例
项目工程导入依赖首先新建一个maven项目,在项目的pom.xml中添加spring相关及AOP的依赖项:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/原创 2020-08-06 17:05:41 · 4781 阅读 · 0 评论 -
Spring完整揭秘(五):Spring的AOP框架
文章目录AOP的概念AOP 中的基础要素:Java平台AOP的实现Spring的AOP框架@ AspectJ形式的Spring AOPSpring AOP 应用案例AOP的概念AOP全称Aspect -Oriented Proramming,中文称为面向切面编程:AOP 中的基础要素: Join point(连接点):程序能被拦截的某些目标,比如某个执行方法。Advice(通知):是指在特定的连接点(Join point)要做的动作。通知分为方法执行前通知(Before Advice),方原创 2020-08-05 13:08:32 · 386 阅读 · 0 评论 -
Spring完整揭秘(四):Spring的IoC容器之基于注解的自动装配
文章目录背景classpath-scanning注解@Autowired使用 @PostConstruct完整测试背景在《Spring的IoC容器之BeanFactory》与Spring的IoC容器之ApplicationContext两篇文章中,我们在xml文件中配置bean标签,实现了依赖注入,本文将介绍基于注解的方式实现自动装配。classpath-scanning在前面的示例中我们需要将相应对象的bean定义,一个个地添加到IoC容器的配置文件中,如果bean的数量越来越多,配置文件会原创 2020-08-04 11:53:40 · 242 阅读 · 0 评论 -
Spring完整揭秘(三):Spring的IoC容器之ApplicationContext
文章目录ApplicationContext与BeanFactory的区别Spring统一资源加载策略ApplicationContext 与 统一资源Resource的关系ApplicationContext多配置模块加载的简化ApplicationContext与MessageSourceApplicationContext与BeanFactory的区别Spring提供了基本的IoC容器: BeanFactory, 在此基础上又提供了更为先进的IoC容器:ApplicationContext,该容原创 2020-08-03 11:58:57 · 691 阅读 · 0 评论 -
Spring个人深入学习路线图
一 、《Spring实战》《Spring全家桶的深入学习(一):Spring起步》《Spring全家桶的深入学习(二):基于SpringMVC开发web应用》《Spring全家桶的深入学习(三):实现数据持久化》《Spring全家桶的深入学习(四):使用Spring Data实现数据持久化》《Spring全家桶的深入学习(五):使用Spring Security安全框架保护web应用》《Spring全家桶的深入学习(六):Spring的配置属性》《Spring全家桶的深入学习(七):Spri原创 2020-07-31 15:22:41 · 2509 阅读 · 0 评论 -
Spring完整揭秘(二):Spring的IoC容器之BeanFactory
文章目录背景Spring 的 IoC容器Spring的IoC容器之BeanFactory用 BeanFactory 的XML配置方式实现业务对象间的依赖管理格式beansbeanbean 的 scopeBeanFactory的完整例子Bean的加载过程背景在《Spring完整揭秘(一):IoC》文章中描述了IoC Service Provider 的基本职责:对象的构建管理;对象间的依赖绑定;本文将针对Spring的 IoC容器中的IoC Service Provider功能进行深入剖析原创 2020-07-30 16:57:48 · 296 阅读 · 0 评论 -
Spring完整揭秘(一):IoC
文章目录Spring的起源Spring框架Spring的IOC容器IoC的基本概念IoC的注入方式我对IOC的理解Spring的起源在早期的J2EE平台开发实践过程中,过分强调分布式环境的使用,比如EJB,开发和部署复杂、测试困难,且代价昂贵,在这种历史背景情况下,倡导轻量级应用解决方案的Spring应运而生。Spring框架Spring倡导一切从实际出发,以敏捷、实用的态度来选择适合当前开发场景的解决方案。Spring框架的本质就是提供各种服务组件,以帮助我们简化基于POJO的Java企业级应用程原创 2020-07-29 11:07:33 · 345 阅读 · 0 评论 -
Spring全家桶的深入学习(十二):集成Mongodb与WebFlux实现反应式API
文章目录背景Spring WebFlux通过Spring Data集成mongodb添加依赖Spring环境配置将领域对象映射为文档编写反应式的MongoDB repository接口使用Spring WebFlux添加依赖编写反应式控制器通过jmeter进行测试测试配置测试结果背景《Spring全家桶的深入学习(一):Spring起步》《Spring全家桶的深入学习(二):基于SpringMVC开发web应用》《Spring全家桶的深入学习(三):实现数据持久化》《Spring全家桶的深入学习(原创 2020-07-28 16:27:58 · 530 阅读 · 0 评论 -
Spring全家桶的深入学习(十一):Spring Boot集成MyBatis实现增删改查
文章目录背景MybatisSpring Boot集成MyBatis实现增删改查1. 添加maven依赖2. Spring添加MyBatis配置3.持久层接口4.Mapper映射5. 修改业务层逻辑6. 视图层增加修改和删除功能7. 修改控制器逻辑8. 在启动类里加上注解用于给出需要扫描的mapper文件路径完整测试增加用户修改用户查找用户删除用户小结背景《Spring全家桶的深入学习(一):Spring起步》《Spring全家桶的深入学习(二):基于SpringMVC开发web应用》《Spring全原创 2020-07-23 11:43:34 · 525 阅读 · 0 评论 -
Spring源码解析(二):加载Bean过程
加载Bean时序图doLoadBeanDefinitions源码/*** org.springframework.beans.factory.xml.XmlBeanDefinitionReader*/ protected int doLoadBeanDefinitions(InputSource inputSource, Resource resource) throws BeanDefinitionStoreException { try { Document doc = d原创 2020-07-17 16:46:47 · 295 阅读 · 1 评论 -
Spring源码解析(一):认识统一资源Resource
文章目录背景统一资源:Resource接口Resource的子类Resource的默认实现:AbstractResourceResource的具体实现类后续背景JDK库有一个标准类 java.net.URL,该类在 Java SE 中的定位为统一资源定位器(Uniform Resource Locator)。该类将不同来源的资源抽象成URL,通过注册不同的handler(URLStreamHandler)来处理不同来源的资源的读取逻辑,一般handler的类型使用不同前缀(协议,Protocol原创 2020-07-16 17:28:11 · 356 阅读 · 0 评论 -
Spring全家桶的深入学习(十):Spring Integration集成模式实现企业ESB
文章目录背景Spring IntegrationSpring Integration的几个重要概念Spring Integration集成模式实战入口网关消息过滤器处理单元(发送消息)集成组件修改用户服务业务逻辑功能测试小结背景《Spring全家桶的深入学习(一):Spring起步》《Spring全家桶的深入学习(二):基于SpringMVC开发web应用》《Spring全家桶的深入学习(三):实现数据持久化》《Spring全家桶的深入学习(四):使用Spring Data实现数据持久化》《Sp原创 2020-07-15 16:57:12 · 8082 阅读 · 2 评论 -
Spring全家桶的深入学习(九):Spring集成RabbitMQ实现异步消息处理
文章目录背景RabbitMQRabbitMQ的基本概念RabbitMQ的消息路由走向Spring集成RabbitMQ实现异步消息处理1. 添加maven依赖2. Spring添加RabbitMQ配置3. 创建RabbitMQ配置类4. 创建接收消息监听程序5. 修改业务逻辑,实现发送消息功能功能测试小结背景《Spring全家桶的深入学习(一):Spring起步》《Spring全家桶的深入学习(二):基于SpringMVC开发web应用》《Spring全家桶的深入学习(三):实现数据持久化》《Spr原创 2020-07-14 14:19:47 · 1346 阅读 · 0 评论 -
Spring全家桶的深入学习(八):Spring集成JavaMailSender实现邮件发送
文章目录背景JavaMailSenderSpring集成邮件发送功能1. 添加maven依赖2. 添加Spring邮件配置3. 创建邮件管理Bean并注入Spring应用上下文4. 修改业务逻辑,调用邮件发送功能邮件发送功能测试小结背景《Spring全家桶的深入学习(一):Spring起步》《Spring全家桶的深入学习(二):基于SpringMVC开发web应用》《Spring全家桶的深入学习(三):实现数据持久化》《Spring全家桶的深入学习(四):使用Spring Data实现数据持久化》原创 2020-07-13 13:08:28 · 1008 阅读 · 6 评论 -
Spring全家桶的深入学习(七):Spring集成REST API服务
文章目录背景REST API服务Spring集成REST API服务用Spring MVC实现用户管理Restful ApiSpring 集成Swagger2API接口进行测试增加用户(HTTP POST请求)查找用户(HTTP GET请求)修改用户(HTTP PUT请求)删除用户(HTTP DELETE请求)小结背景《Spring全家桶的深入学习(一):Spring起步》《Spring全家桶的深入学习(二):基于SpringMVC开发web应用》《Spring全家桶的深入学习(三):实现数据持久化原创 2020-07-10 13:46:36 · 912 阅读 · 0 评论 -
Spring全家桶的深入学习(六):Spring的配置属性
文章目录背景Spring的环境抽象(Environment)通过应用属性配置文件完成Spring的环境配置配置数据源配置模板引擎配置日志创建自定义的配置属性在application.yml中加入配置编写配置类使用自定义的配置属性属性配置测试小结背景《Spring全家桶的深入学习(一):Spring起步》《Spring全家桶的深入学习(二):基于SpringMVC开发web应用》《Spring全家桶的深入学习(三):实现数据持久化》《Spring全家桶的深入学习(四):使用Spring Data实现原创 2020-07-09 12:06:47 · 722 阅读 · 0 评论