
JavaEE
_江南一点雨
Java攻城狮
展开
-
Spring RestTemplate中几种常见的请求方式
在Spring Cloud中服务的发现与消费一文中,当我们从服务消费端去调用服务提供者的服务的时候,使用了一个很好用的对象,叫做RestTemplate,当时我们只使用了RestTemplate中最简单的一个功能getForEntity发起了一个get请求去调用服务端的数据,同时,我们还通过配置@LoadBalanced注解开启客户端负载均衡,RestTemplate的功能不可谓不强大,那么今天我原创 2017-09-11 11:57:19 · 254837 阅读 · 27 评论 -
Spring Cloud Zuul中异常处理细节
Spring Cloud Zuul对异常的处理整体来说还是比较方便的,流程也比较清晰,只是由于Spring Cloud发展较快,各个版本之间有差异,导致有的小伙伴在寻找这方面的资料的时候经常云里雾里,本文将以Dalston.SR3版本为例,来说明Spring Cloud Zuul中的异常处理问题。 本文是Spring Cloud系列的第二十一篇文章,了解前二十篇文章内容有助于更好的理解本文: 1原创 2017-11-01 16:31:46 · 10846 阅读 · 1 评论 -
Spring Cloud Config服务端配置细节(二)之加密解密
在微服务架构中,由于独立的服务个数众多,加上前期测试工作量大,一些原本由运维人员维护的敏感信息会被我们直接写在微服务中,以提高开发效率,但是这种明文存储方式显然是非常危险的,所以我们要对这些信息进行加密,而Spring Cloud Config则提供了对称加解密、非对称加解密的功能来帮助我们完成这一需求。OK,本文我们就来看看如何实现配置信息的加解密。 本文是Spring Cloud系列的第二十原创 2017-11-10 14:25:41 · 5569 阅读 · 0 评论 -
Spring Cloud中声明式服务调用Feign
前面几篇文章我们详细的介绍了Ribbon、RestTemplate、Hystrix组件,这些组件是我们Spring Cloud中非常基础的组件,小伙伴们在使用的过程中可能也发现了这些东西都是同时出现的,而且配置也都非常相似,每次开发都有很多相同的代码,因此,Spring Cloud基于Netflix Feign整合了Ribbon和Hystrix,让我们的开发工作变得更加简单,就像Spring Boo原创 2017-10-16 17:24:51 · 10485 阅读 · 1 评论 -
Spring Cloud中Feign的继承特性
上篇文章我们了解了Feign的基本使用,在HelloService类中声明接口时,我们发现这里的代码可以直接从服务提供者的Controller中复制过来,这些可以复制的代码Spring Cloud Feign对它进行了进一步的抽象,这里就用到了Feign的继承特性,本文我们就来看看如何利用Feign的继承特性来进一步简化我们的代码。 本文是Spring Cloud系列的第十七篇文章,了解前十六篇原创 2017-10-17 15:46:26 · 6654 阅读 · 3 评论 -
Spring Cloud Config客户端配置细节
Spring Cloud Config服务端的配置小伙伴们应该都很熟悉了,本文我们主要来看看客户端配置的一些细节问题。 本文是Spring Cloud系列的第二十五篇文章,了解前二十四篇文章内容有助于更好的理解本文: 1.使用Spring Cloud搭建服务注册中心 2.使用Spring Cloud搭建高可用服务注册中心 3.Spring Cloud中服务的发现与消费 4.Eureka中的原创 2017-11-14 10:05:55 · 9046 阅读 · 1 评论 -
Spring Cloud Bus之RabbitMQ初窥
和Spring Cloud Config一样,我们接下来要聊的Spring Cloud Bus也是微服务架构系统中的必备组件。Spring Cloud Bus可以将分布式系统的节点与轻量级消息代理链接,然后可以实现广播状态更改(例如配置更改)或广播其他管理指令。Spring Cloud Bus就像一个分布式执行器,用于扩展的Spring Boot应用程序,但也可以用作应用程序之间的通信通道。那么这里原创 2017-11-15 09:34:20 · 10007 阅读 · 3 评论 -
分布式配置中心Spring Cloud Config初窥
随着我们的分布式项目越来越大,我们可能需要将配置文件抽取出来单独管理,Spring Cloud Config对这种需求提供了支持。Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。我们可以使用Config Server在所有环境中管理应用程序的外部属性,Config Server也称为分布式配置中心,本质上它就是一个独立的微服务应用,用来连接配置仓库并将获取到的配原创 2017-11-06 17:51:39 · 4380 阅读 · 0 评论 -
Spring Cloud Bus整合RabbitMQ
上篇文章中小伙伴们已经学会了RabbitMQ的基本安装与使用以及如何在Spring Boot中使用RabbitMQ,整体来说还是比较简单的。本文我们来看看Spring Cloud Bus和RabbitMQ的整合,看看如何更简单的实现配置刷新。 本文是Spring Cloud系列的第二十七篇文章,了解前二十六篇文章内容有助于更好的理解本文: 1.使用Spring Cloud搭建服务注册中心 2原创 2017-11-16 10:16:30 · 19633 阅读 · 5 评论 -
Spring Cloud Stream使用细节
上篇文章我们看了Spring Cloud Stream的基本使用,小伙伴们对Spring Cloud Stream应该也有了一个基本的了解,但是上篇文章中的消息我们是从RabbitMQ的web管理页面发来的,如果我们想要从代码中发送消息呢?本文我们就来看看Spring Cloud Stream的一些使用细节。 本文是Spring Cloud系列的第三十篇文章,了解前二十九篇文章内容有助于更好的理原创 2017-12-04 15:19:10 · 14629 阅读 · 9 评论 -
Spring Cloud Config服务端配置细节(一)
上篇文章我们看了Spring Cloud中分布式配置中心的一个基本使用,这里边还涉及到许多细节,本文我们就来看看服务端配置中的一些细节。 本文是Spring Cloud系列的第二十三篇文章,了解前二十二篇文章内容有助于更好的理解本文: 1.使用Spring Cloud搭建服务注册中心 2.使用Spring Cloud搭建高可用服务注册中心 3.Spring Cloud中服务的发现与消费原创 2017-11-09 15:38:48 · 4110 阅读 · 1 评论 -
Spring Cloud中Feign配置详解
到目前为止,小伙伴们对Feign的使用已经掌握的差不多了,我们在前文也提到Feign是对Ribbon和Hystrix的整合,那么在Feign中,我们要如何配置Ribbon和Hystrix呢?带着这两个问题,我们来看看本文的内容。 本文是Spring Cloud系列的第十八篇文章,了解前十七篇文章内容有助于更好的理解本文: 1.使用Spring Cloud搭建服务注册中心 2.使用Sprin原创 2017-10-24 11:24:29 · 14101 阅读 · 1 评论 -
Spring Cloud Zuul中路由配置细节
上篇文章我们介绍了API网关的基本构建方式以及请求过滤,小伙伴们对Zuul的作用应该已经有了一个基本的认识,但是对于路由的配置我们只是做了一个简单的介绍,本文我们就来看看路由配置的其他一些细节。 本文是Spring Cloud系列的第二十篇文章,了解前十九篇文章内容有助于更好的理解本文: 1.使用Spring Cloud搭建服务注册中心 2.使用Spring Cloud搭建高可用服务注册中原创 2017-10-31 09:02:40 · 48281 阅读 · 5 评论 -
Spring Cloud自定义Hystrix请求命令
在上篇文章中,我们介绍了断路器Hystrix的一个简单使用,主要是通过注解来实现断路器的功能的,不过对于Hystrix的使用,除了注解,我们也可以使用继承类的方式来实现,本文我们就来看看另一种Hystrix的使用方式。 本文是Spring Cloud系列的第十一篇文章,了解前十篇文章内容有助于更好的理解本文: 1.使用Spring Cloud搭建服务注册中心 2.使用Spring Cloud搭原创 2017-09-19 17:08:56 · 4687 阅读 · 1 评论 -
使用Spring Cloud搭建服务注册中心
我们在之前的博客中已经介绍过阿里的分布式服务框架dubbo【Linux上安装Zookeeper以及一些注意事项】【一个简单的案例带你入门Dubbo分布式框架】,但是小伙伴们应该也看到了,阿里的dubbo无法单独完成工作,我们还要借助于Apache上的开源框架zookeeper(不是必须,但是最佳实践莫过于zookeeper),使用zookeeper作为服务注册中心,才能实现一个较好的分布式应用。与原创 2017-09-03 12:08:25 · 38453 阅读 · 12 评论 -
RestTemplate的逆袭之路,从发送请求到负载均衡
上篇文章我们详细的介绍了RestTemplate发送请求的问题,熟悉Spring的小伙伴可能会发现:RestTemplate不就是Spring提供的一个发送请求的工具吗?它什么时候具有了实现客户端负载均衡的功能的?本文我们就来聊一聊RestTemplate的逆袭之路,看它如何从一个普通的请求发送工具变成了具有客户端负载均衡功能的请求发送工具。本文是Spring Cloud系列的第七篇文章,了解前六篇原创 2017-09-12 08:35:36 · 24583 阅读 · 4 评论 -
Spring Cloud中Hystrix的服务降级与异常处理
上篇文章我们看了自定义Hystrix请求命令的问题,使小伙伴们对Hystrix的使用有了进一步的了解,之前两篇文章都有涉及到一个叫做fallbackMethod的东西,我们之前没有细说这个东西,今天我们就来详细说说这个fallbackMethod,也就是服务降级问题。 本文是Spring Cloud系列的第十二篇文章,了解前十一篇文章内容有助于更好的理解本文: 1.使用Spring Cloud搭原创 2017-09-20 17:20:05 · 19612 阅读 · 1 评论 -
Spring Cloud中负载均衡器概览
在上篇文章中(RestTemplate的逆袭之路,从发送请求到负载均衡)我们完整的分析了RestTemplate的工作过程,在分析的过程中,我们遇到过一个ILoadBalancer接口,这个接口中有一个chooseServer方法是我们选择服务实例的方法,这个也是整个负载均衡中最最核心的部分,那么它到底是采用了什么样的策略从服务提供者列表中选出了一个服务供服务消费者去调用的?这是我们今天要讨论的问题原创 2017-09-13 08:34:20 · 4672 阅读 · 2 评论 -
Spring Cloud中Hystrix的请求缓存
高并发环境下如果能处理好缓存就可以有效的减小服务器的压力,Java中有许多非常好用的缓存工具,比如Redis、EHCache等,当然在Spring Cloud的Hystrix中也提供了请求缓存的功能,我们可以通过一个注解或者一个方法来开启缓存,进而减轻高并发环境下系统的压力。OK,本文我们就来看看Hystrix中请求缓存的使用。 本文是Spring Cloud系列的第十三篇文章,了解前十二篇文章内原创 2017-10-09 17:39:48 · 5759 阅读 · 2 评论 -
Spring Cloud中Hystrix的请求合并
在微服务架构中,我们将一个项目拆分成很多个独立的模块,这些独立的模块通过远程调用来互相配合工作,但是,在高并发情况下,通信次数的增加会导致总的通信时间增加,同时,线程池的资源也是有限的,高并发环境会导致有大量的线程处于等待状态,进而导致响应延迟,为了解决这些问题,我们需要来了解Hystrix的请求合并。 本文是Spring Cloud系列的第十四篇文章,了解前十三篇文章内容有助于更好的理解本文:原创 2017-10-12 11:56:11 · 5871 阅读 · 4 评论 -
Spring Cloud中的API网关服务Zuul
到目前为止,我们Spring Cloud中的内容已经介绍了很多了,Ribbon、Hystrix、Feign这些知识点大家都耳熟能详了,我们在前文也提到过微服务就是把一个大的项目拆分成很多小的独立模块,然后通过服务治理让这些独立的模块配合工作等。那么大家来想这样两个问题:1.如果我的微服务中有很多个独立服务都要对外提供服务,那么对于开发人员或者运维人员来说,他要如何去管理这些接口?特别是当项目非常大非原创 2017-10-30 11:01:27 · 4730 阅读 · 0 评论 -
Spring Cloud中Hystrix仪表盘与Turbine集群监控
Hystrix仪表盘,就像汽车的仪表盘实时显示汽车的各项数据一样,Hystrix仪表盘主要用来监控Hystrix的实时运行状态,通过它我们可以看到Hystrix的各项指标信息,从而快速发现系统中存在的问题进而解决它,OK,本文我们就来看看Hystrix仪表盘要怎么使用。 本文是Spring Cloud系列的第十五篇文章,了解前十四篇文章内容有助于更好的理解本文: 1.使用Spring Cloud原创 2017-10-13 11:59:57 · 10266 阅读 · 3 评论 -
Spring Cloud Bus整合Kafka
Kafka是由LinkedIn开发并开源的分布式消息系统,因其分布式及高吞吐率而被广泛使用,现已与Cloudera Hadoop,Apache Storm,Apache Spark集成,具备许多优秀的性能:高吞吐、分布式、跨平台、实时性以及伸缩性,本文我们就来看看如何将Spring Cloud Bus和Kafka进行整合。 本文是Spring Cloud系列的第二十八篇文章,了解前二十七篇文章内原创 2017-11-25 10:52:59 · 9149 阅读 · 1 评论 -
Spring Cloud教程合集
Spring Cloud系列终于搞完啦! 这一系列是笔者的学习笔记,原书之前也给小伙伴们推荐过 《Spring Cloud微服务实战》 原书采用了较老的Brixton版,笔者在学习的过程中,采用了当时最新的Dalston.SR3版,可是Spring Cloud的更新还是太快了,还没学完,Dalston.SR3就已经不是最新版了,囧了个囧。不过大部分的API都还是没有什么差异的,可以直接原创 2017-12-05 11:04:51 · 18100 阅读 · 4 评论 -
SpringBoot中自定义参数绑定
本文是vhr系列的第十篇,vhr项目地址https://github.com/lenve/vhr 正常情况下,前端传递来的参数都能直接被SpringMVC接收,但是也会遇到一些特殊情况,比如Date对象,当我的前端传来的一个日期时,就需要服务端自定义参数绑定,将前端的日期进行转换。自定义参数绑定也很简单,分两个步骤: 1.自定义参数转换器 自定义参数转换器实现Converter接口,如下:原创 2018-02-03 09:04:13 · 9632 阅读 · 0 评论 -
SpringBoot中使用POI,快速实现Excel导入导出
本文是vhr系列的第十一篇,vhr项目地址https://github.com/lenve/vhr 导出Excel整体来说,Excel有.xls和.xlsx,那么在POI中这两个也对应两个不同的类,但是类名不同,方法基本都是一致的,因此我这里将只介绍.xls一种。 整体来说,可以分为如下七个步骤: 1.创建Excel文档HSSFWorkbook workbook = new HSSFWork原创 2018-02-05 12:00:24 · 34715 阅读 · 7 评论 -
SpringBoot中发送QQ邮件
本文是vhr系列的第十二篇,项目地址https://github.com/lenve/vhr 邮件发送也是一个老生常谈的问题了,代码虽然简单,但是许多小伙伴对过程不太理解,所以还是打算和各位小伙伴聊聊这个话题。 邮件协议我们经常会听到各种各样的邮件协议,比如SMTP、POP3、IMAP,那么这些协议有什么作用,有什么区别?我们先来讨论一下这个问题。 SMTP是一个基于TCP/IP的应用层协议原创 2018-03-09 10:55:24 · 10878 阅读 · 0 评论 -
SpringBoot中使用Freemarker构建邮件模板
本文是vhr系列的第十三篇,项目地址:https://github.com/lenve/vhr 当邮件内容比较简单的时候,我们可能一行字符串就能表达所有意思了,但是大部分情况下,我们的邮件内容都比较复杂需要用HTML来组织邮件内容,而且HTML中的数据还要动态修改,这时,最好的解决方案莫过于Freemarker了。有的小伙伴看到Freemarker就疑惑了,你不是号称前后端分离么,怎么还用上Fre原创 2018-03-10 11:49:17 · 7083 阅读 · 5 评论 -
SpringBoot+WebSocket实现在线聊天(一)
本文是vhr系列的第十四篇,项目地址:https://github.com/lenve/vhr 在线聊天功能是为了方便HR快速交流,由于HR人数有限,因此这里并未考虑高并发问题,小伙伴思考问题一定要结合上下文环境。OK,我们先来看看效果图: 在线聊天效果图登陆成功后,点击右上角的闹铃图标,进入到消息页面,点击 好友聊天 选项卡,效果如下: 此时换个浏览器,或者使用chrome中的多用户模式原创 2018-03-12 09:55:09 · 19064 阅读 · 2 评论 -
MongoDB基本操作
上篇文章我们简单介绍了MongoDB安装以及启动命令,本文我们来看看基本的增删改查,对MongoDB有一个直观的认识。 本文是MongoDB系列的第二篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安装MongoDB 客户端安装配置上篇文章我们提到可以在MongoDB启动成功之后通过mongo命令进入MongoDB客户端,然后在客户端输入操作命令执行增删改查等操作。当然,我们也原创 2018-03-19 11:44:30 · 4974 阅读 · 0 评论 -
SpringBoot+WebSocket实现在线聊天(二)
本文是vhr系列第15篇,项目地址:https://github.com/lenve/vhr 在线聊天使用了SpringBoot+WebSocket实现,为了保证用户隐私,所有的聊天数据都保存在系统本地,服务器只进行了数据转发。OK,那接下来,我们来看下大致的实现步骤。 服务端服务端首先加入websocket依赖,如下: <dependency> <groupId>org.spring原创 2018-03-13 15:56:09 · 8694 阅读 · 5 评论 -
MongoDB文档更新操作
我们在前面的文章中提到过文档的基本的增删改查操作,MongoDB中提供的增删改查的语法非常丰富,本文我们主要来看看更新都有哪些好玩的语法。 本文是MongoDB系列的第四篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安装MongoDB 2.MongoDB基本操作 3.MongoDB数据类型 文档替换假设我的集合中现在存了如下一段数据: ...原创 2018-04-24 09:35:35 · 6566 阅读 · 1 评论 -
Spring Boot2 系列教程(二)创建 Spring Boot 项目的三种方式
我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 优快云 上,阅读量最大的一篇有 43W+,如下图:2017 年由于种种原因,就没有再继续更新 Spring Boot 相关的博客了,2018年又去写书了,也没更新,现在 Spring Boot 最新稳定版是 2.1.8 ,松哥想针对此写一个系列教程,专门讲 Spring Boot...原创 2019-09-09 15:58:10 · 2758 阅读 · 0 评论 -
ElementUI中tree控件踩坑记
vhr部门管理模块更新啦!为了让小伙伴们快速理解部门管理模块实现思路,我想通过3篇短文来给大家介绍下大致的实现思路和核心代码。 项目地址:https://github.com/lenve/vhr1.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一) 2.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(二) 3原创 2018-02-02 20:30:46 · 29877 阅读 · 0 评论 -
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(二)
当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异。笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5-6篇文章,来介绍一下项目中遇到的问题以及我的解决方案,希望这个系列能够给小伙伴一些帮助。本系列文章并不是手把手的教程,主要介绍了核心思路并讲解了核心代码,完整的代码小伙伴们可以在GitHub上star并clone下来研究。另外,原本计划把项目跑起来放到网原创 2018-01-10 09:09:00 · 82926 阅读 · 26 评论 -
使用MyBatis轻松实现递归查询与存储过程调用
vhr部门管理模块更新啦!为了让小伙伴们快速理解部门管理模块实现思路,我想通过3篇短文来给大家介绍下大致的实现思路和核心代码。 项目地址:https://github.com/lenve/vhr建议小伙伴们先阅读前面的文章,会有助于你理解本文。 1.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一) 2.SpringBoot+Vue前后端分离,使用S原创 2018-02-02 13:32:59 · 5982 阅读 · 2 评论 -
Spring Cloud Stream初窥
Spring Cloud Stream是一个构建消息驱动的微服务框架。它构建在Spring Boot之上用以创建工业级的应用程序,并且通过Spring Integration提供了和消息代理的连接。Spring Cloud Stream为一些供应商的消息中间件产品提供了个性化的自动化配置实现(目前仅支持RabbitMQ和Kafka),同时引入了发布订阅、消费组和分区的语义概念。本文我们就先来看一下S原创 2017-11-28 10:43:58 · 5113 阅读 · 0 评论 -
V部落博客管理平台开源啦! Vue+SpringBoot强强联合!
V部落是一个多用户博客管理平台,采用Vue+SpringBoot开发。 项目演示地址: http://45.77.146.32:8081/index.html 项目效果图登陆页面文章列表发表文章用户管理栏目管理数据统计 技术栈后端技术栈后端主要采用了: 1.SpringBoot 2.SpringSecurity 3.MyBatis 4.部分接口遵循Restful风格 5.MySQL原创 2017-12-27 09:01:57 · 21743 阅读 · 36 评论 -
SpringSecurity中密码加盐与SpringBoot中异常统一处理
当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异。笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5-6篇文章,来介绍一下项目中遇到的问题以及我的解决方案,希望这个系列能够给小伙伴一些帮助。本系列文章并不是手把手的教程,主要介绍了核心思路并讲解了核心代码,完整的代码小伙伴们可以在GitHub上star并clone下来研究。另外,原本计划把项目跑起来放到网原创 2018-01-11 18:29:21 · 10929 阅读 · 0 评论 -
SpringBoot+SpringSecurity处理Ajax登录请求
最近在项目中遇到了这样一个问题:前后端分离,前端用Vue来做,所有的数据请求都使用vue-resource,没有使用表单,因此数据交互都是使用JSON,后台使用Spring Boot,权限验证使用了Spring Security,因为之前用Spring Security都是处理页面的,这次单纯处理Ajax请求,因此记录下遇到的一些问题。这里的解决方案不仅适用于Ajax请求,也可以解决移动端请求验证。原创 2017-12-29 09:43:52 · 44019 阅读 · 42 评论