spring cloud微服务
文章平均质量分 81
专注于微服务的博客系列
牛奋lch
我是一只快乐的程序猿……
展开
-
spring data jpa使用详解
使用Spring data JPA开发已经有一段时间了,这期间学习了一些东西,也遇到了一些问题,在这里和大家分享一下。前言:Spring data简介:Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。 Spring Data 包含多个子项目:Commons - 提供共享原创 2016-07-27 09:45:40 · 52827 阅读 · 8 评论 -
spring boot--使用异步请求,提高系统的吞吐量
前言:在我们的实际生产中,常常会遇到下面的这种情况,某个请求非常耗时(大约5s返回),当大量的访问该请求的时候,再请求其他服务时,会造成没有连接使用的情况,造成这种现象的主要原因是,我们的容器(tomcat)中线程的数量是一定的,例如500个,当这500个线程都用来请求服务的时候,再有请求进来,就没有多余的连接可用了,只能拒绝连接。要是我们在请求耗时服务的时候,能够异步请求(请求到contro原创 2017-12-07 19:29:42 · 23915 阅读 · 4 评论 -
spring boot整合quartz实现多个定时任务
最近收到了很多封邮件,都是想知道spring boot整合quartz如何实现多个定时任务的,由于本人生产上并没有使用到多个定时任务,这里给个实现的思路。1、新建两个定时任务,如下:public class ScheduledJob implements Job{ @Override public void execute(JobExecutionContext cont原创 2017-11-15 18:22:24 · 10851 阅读 · 3 评论 -
spring boot--整合spring session实现session共享以及cookie丢失问题解决
spring session可以利用redis透明的存储并共享web应用的HttpSession,当结合spring boot使用时,更是大大的节省了我们整合的时间。1 添加pom依赖 org.springframework.boot spring-boot-starter-data-redis org.springframework.s原创 2017-11-06 14:49:24 · 28737 阅读 · 6 评论 -
微服务间调用导致的Could not write content: Infinite recursion (StackOverflowError)问题
最近在开发中遇到了一个奇葩的问题,原创 2017-11-01 17:47:13 · 4137 阅读 · 0 评论 -
ELk Stack-5.0.0-Logstash的安装以及logstash-input-plugin-file使用
Logstash下载地址:https://www.elastic.co/downloads/logstashLogstash官方文档:https://www.elastic.co/guide/en/logstash/current/index.html1、下载安装下载下来后,直接解压并进入logstash/bin目录下,执行如下命令:./logstash -e ""启动原创 2017-09-29 16:02:57 · 934 阅读 · 0 评论 -
springboot-加载自定义的properties文件
在我们的开发中,有很多配置文件是需要分开配置的,例如kafka.properties,amq.properties等,那这些自定义的配置文件,怎么加载到对应的类里面了,下面就来说说这个问题。在src/main/resources目录下新建一个config文件夹,用来存放我们的properties文件。目录结构如下:user.properties配置文件内容如下:com.chhl原创 2017-09-26 20:43:34 · 30254 阅读 · 3 评论 -
spring boot解决第三方jar包依赖的问题
在我们的开发中,通过会依赖第三方的jar包,而这些jar包由于还处于测试或开发阶段,并没有放到maven库中,这个时候,如果我们还按照原来spring boot的方式打包的话,第三方jar包是打不进来的,所有很多时候,我们在本地测试,开发没问题,一部署到服务器上,就报ClassNotFound异常。示例如下:第三方jar包的引用方式: com.chhliu chhliu-sen原创 2017-08-11 18:41:48 · 7542 阅读 · 0 评论 -
spring boot整合Cucumber(BDD)
1、新建一个springboot工程工程结构如下:2、添加pom依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0原创 2017-08-29 18:23:32 · 6908 阅读 · 2 评论 -
使用spring事件驱动机制,实现权限信息的自动收集存库
最近在做权限管理,希望能够在容器初始化后,自动的将所有Controller上的url进行收集,并存放到权限表中,从而代替人工配置的方式。实现思路如下: spring事件驱动机制+注解来实现。spring事件驱动机制spring在容器初始化之后,会触发ContextRefreshedEvent等事件,只要实现了Application原创 2017-08-25 12:15:08 · 5236 阅读 · 6 评论 -
spring boot中统一异常处理
在前面的博客中,Spring Boot整合jpa,Shiro进行权限管理 异常都是直接返回到页面上,这样做既不安全,也不友好,所以在返回给页面之前,我们需要对异常信息进行统一的处理,该部分的处理思路和spring mvc的处理思路是一致的。下面,我们来对前面的示例进行改造,从而能够支持统一的异常处理。1、定义全局异常处理类@ControllerAdvicepublic class原创 2017-08-09 12:03:54 · 5076 阅读 · 0 评论 -
spring boot整合Shiro实现单点登录
前面的博客中,我们说道了Shiro的两个最大的特点,认证和授权,而单点登录也是属于认证的一部分,默认情况下,Shiro已经为我们实现了和Cas的集成,我们加入集成的一些配置就ok了。1、加入shiro-cas包 org.apache.shiro shiro-cas 1.2.4原创 2017-08-07 17:35:31 · 43059 阅读 · 44 评论 -
spring boot整合redis实现shiro的分布式session共享
我们知道,shiro是通过SessionManager来管理Session的,而对于Session的操作则是通过SessionDao来实现的,默认的情况下,shiro实现了两种SessionDao,分别为CachingSessionDAO和MemorySessionDAO,当我们使用EhCache缓存时,则是使用的CachingSessionDAO,不适用缓存的情况下,就会选择基于内存的Sessi原创 2017-08-07 08:34:41 · 18730 阅读 · 11 评论 -
spring boot使用内嵌的tomcat解决不安全的HTTP方法安全漏洞
最近项目开发完毕,在进行安全测试的时候,爆出了一个中级安全漏洞--不安全的HTTP方法,如果对这个安全漏洞有不明白的地方,可以自行问度娘。1、传统Web项目的解决方案在不使用spring boot的情况下,有两种解决方案1、在过滤器中进行拦截,对于不是http安全的方法直接给前端返回错误信息;2、在tomcat的web.xml配置,对不安全的方法进行拦截。下面,我们重点说下第二种方案,因为原创 2017-08-04 11:47:07 · 11984 阅读 · 1 评论 -
spring boot整合redis,实现shiro的CacheManager
接着上一篇博客来讲:Spring Boot整合jpa,Shiro进行权限管理Shiro默认整合了EhCache,来实现缓存,如果我们想用redis替换EhCache来实现缓存怎么做了?我们可以从Shiro的源码来找到一些端倪。我们可以模拟EhCacheManager的实现方式,EhCacheManager类定义如下:public class EhCacheManager implement原创 2017-08-03 17:45:17 · 13812 阅读 · 2 评论 -
spring boot-部署时报org.springframework.beans.factory.BeanCreationNotAllowedException异常
今天在本机测试的时候,一直报这个异常:org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration': Sin原创 2017-07-05 15:50:10 · 16947 阅读 · 6 评论 -
Spring Boot整合jpa,Shiro进行权限管理
转:http://412887952-qq-com.iteye.com/blog/2299777本来想写一篇spring boot整合Shiro实现权限验证的文章,发现这篇写的非常不错,就直接借鉴了!(1). Shiro简单介绍Shiro是Apache下的一个开源项目,我们称之为Apache Shiro。它是一个很易用与Java项目的的安全框架,提供了认证、转载 2017-07-27 12:24:37 · 10552 阅读 · 11 评论 -
spring cloud config实现datasource的热部署
关于spring cloud config的基本使用,前面的博客中已经说过了,如果不了解的话,请先看以前的博客spring cloud config整合gitlab搭建分布式的配置中心spring cloud config分布式配置中心的高可用今天,我们的重点是如何实现数据源的热部署。1、在客户端配置数据源@RefreshScope@Configuration//原创 2017-07-19 19:48:44 · 12313 阅读 · 9 评论 -
spring boot jpa-java.lang.IllegalArgumentException: Not a managed type异常问题解决方法
最近遇到一个问题:在生产中有两个模块,一个模块负责定时任务,并负责存库,另一个模块则负责读取数据库,并展示,由于是两个不同的模块,所以每个模块中都有一部分entity是公用的,导致整个系统的代码重复率偏高,所以决定将公共部分的entity提取出来,放到一个公共的模块当中,然后运行以前的代码,结果就抛了如下的异常:Caused by: java.lang.IllegalArgumentExcepti...原创 2017-07-02 12:03:37 · 17224 阅读 · 6 评论 -
Hystrix系列-2-HystrixObservableCommand的使用
在前面一节中HystrixCommand的使用,下面,我们来介绍HystrixObservableCommand的使用。HystrixObservableCommand的作用仍然是用来做资源隔离的,后面会介绍和HystrixCommand的区别,先看用法,示例代码如下:/** * HystrixObservableCommand使用示例 * 只需要集成HystrixObservableCo原创 2017-06-25 14:46:24 · 6211 阅读 · 1 评论 -
Hystrix系列-3-Hystrix的配置-通过代码构造配置
一、首先我们来实现一个HystrixCommand,示例代码如下:package com.example.demo.hystrix.command;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.cli原创 2017-06-25 15:40:39 · 2002 阅读 · 0 评论 -
Hystrix系列-4-Hystrix的动态配置
Hystrix默认使用Archaius来实现的动态配置,我们在上节中,使用了代码的方式来实现配置,这节,我们使用Hystrix的动态配置来实现。1、实现一个Command,代码如下:package com.example.demo.hystrix.command;import org.apache.http.HttpEntity;import org.apache.http.clie原创 2017-06-25 16:29:28 · 9170 阅读 · 7 评论 -
Hystrix系列-5-Hystrix的资源隔离策略
Hystrix的资源隔离策略有两种,分别为:线程池和信号量。说到资源隔离,那我们就要明白,我们为什么需要资源隔离。在一个分布式系统中,服务之间都是相互调用的,如下图所示:例如,我们容器(Tomcat)配置的线程个数为1000,服务A-服务R,其中服务I的并发量非常的大,需要500个线程来执行,此时,服务I又挂了,那么这500个线程很可能就夯死了,那么剩下的服务,总共可用的线程为50原创 2017-06-25 18:57:32 · 18570 阅读 · 9 评论 -
spring boot-整合CAS Client实现单点登陆验证
实现方式一:使用第三方的starter1、依赖的jar net.unicon.cas cas-client-autoconfig-support 1.4.0-GA 2、增加配置文件cas.server-url-prefix=http://127.0.0.1cas.server-login-ur原创 2017-06-13 18:07:05 · 35558 阅读 · 10 评论 -
spring boot-同时使用jms的Queue(队列)和Topic(发布订阅)
前言前面有一篇博客讲到了spring boot整合jms的使用http://blog.csdn.net/liuchuanhong1/article/details/54603546但是最近遇到一个需求,需要同时使用jms的队列和topic,于是就有了下面的测试代码:消费者代码@Component // 必须加此注解,该类才会被作为Message Driven POJO使用pu原创 2017-05-25 19:52:23 · 7536 阅读 · 9 评论 -
spring boot-使用Filter实现Header认证
前言假设客户端在http请求中,已经加入了Header的认证信息,例如:HttpPost post = new HttpPost("http://localhost:8990/sendMail"); StringEntity entity = new StringEntity(json, "utf-8"); entity.setContentType("applicatio原创 2017-05-23 12:02:36 · 26531 阅读 · 10 评论 -
spring boot-实现WebService(CXF实现)的拦截器(Interceptor)
拦截器(Interceptor)是CXF功能最主要的扩展点,可以在不对核心模块进行修改的情况下,动态添加很多功能。拦截器和JAX-WS Handler、Filter的功能类似,当服务被调用时,就会创建一个拦截器链(Interceptor Chain),拦截器链在服务输入(IN)或输出(OUT)阶段实现附加功能。拦截器可以在客户端,也可以在服务端添加。当客户端发起一个WebService请求原创 2017-05-22 19:12:58 · 10161 阅读 · 0 评论 -
spring boot-jpa整合QueryDSL来简化复杂操作
前言使用过spring data jpa的同学,都很清楚,对于复杂的sql查询,处理起来还是比较复杂的,而本文中的QueryDSL就是用来简化JPA操作的。Querydsl定义了一种常用的静态类型语法,用于在持久域模型数据之上进行查询。JDO和JPA是Querydsl的主要集成技术。 本文旨在介绍如何使用Querydsl与JPA组合使用。JPA的Querydsl是JPQL和Criter原创 2017-04-19 20:39:29 · 52313 阅读 · 11 评论 -
spring boot-使用redis的Keyspace Notifications实现定时任务队列
前言:最近项目中有一个需求:需要将执行失败的指令存起来,隔5分钟之后,再取出来执行一次,看到这个需求描述,我第一时间想到了Redis的Keyspace Notifications机制。当然也可以使用jdk自带的DelayQueue来实现,或者更进一步,使用ScheduledThreadPoolExecutor池来实现。由于系统是分布式的,所以考虑使用Redis来实现。关于Redis的Key原创 2017-04-12 21:05:23 · 14854 阅读 · 3 评论 -
spring boot加载第三方jar包的配置文件
前言今天收到一封邮件,大概内容如下:spring boot鼓励去配置化,那么怎么将第三方jar包中的xml去配置化了?其实,这个问题,在前面的博客中也有提到,http://blog.csdn.net/liuchuanhong1/article/details/60873295下面,我们就以Quartz定时任务为例,单独对这个问题来进行说明,如何实现去配置化。如果不使用sprin原创 2017-04-11 19:42:47 · 12530 阅读 · 0 评论 -
spring boot-Logging的配置以及使用
前言:该篇文章基本上是翻译的官方文档!spring boot使用Commons Logging作为内部的日志系统,并且给Java Util Logging,Log4J2以及Logback都提供了默认的配置。如果使用了spring boot的Starters,那么默认会使用Logback用于记录日志。一、Log formatspring boot中默认的日志输出格式如下:20原创 2017-03-29 20:03:23 · 18444 阅读 · 2 评论 -
spring boot封装HttpClient
最近使用到了HttpClient,看了一下官方文档:HttpClient implementations are expected to be thread safe. It is recommended that the same instance of this class is reused for multiple request executions,翻译过来的意思就是:HttpClie原创 2017-03-29 23:17:35 · 31726 阅读 · 6 评论 -
spring boot-分布式定时任务中,异步执行时JMS无法重新投递消息
这篇博客是紧接着上篇博客来说的http://blog.csdn.net/liuchuanhong1/article/details/64126346在上篇博客中,我们基本上实现了分布式的定时任务架构的搭建,但是,当我们异步消费消息中间件中的消息的时候,如果执行的过程中抛了异常,那么,我们无法做到消息重试,示例如下:@Component // 必须加此注解,该类才会被作为Message原创 2017-03-20 19:56:03 · 17351 阅读 · 5 评论 -
spring boot-执行Async任务时,使用自定义的线程池
在前面的博客中,http://blog.csdn.net/liuchuanhong1/article/details/54605697 我们使用了spring boot的异步操作,当时,我们使用的是默认的线程池,但是,如果我们想根据项目来定制自己的线程池了,下面就来说说,如何定制线程池!一、增加配置属性类package com.chhliu.springboot.async.con...原创 2017-03-20 20:16:01 · 34929 阅读 · 6 评论 -
分布式定时任务解决方案-spring boot整合JMS以及Redis实现
最近需要设计一个分布式的定时任务的方案,从理论上来说,Quartz已经提供了一套完善的分布式定时任务的解决方案,但是由于系统目前已有JMS集群和Redis Sentinel集群,如果想要在目前已有的架构上,实现了一个简单的分布式定时任务的话,如何来做了?总体架构设计图如下:redis集群:提供分布式的缓存,以及实现简单的分布式锁http://blog.csdn.net/liuchuanho...原创 2017-03-20 18:29:12 · 10500 阅读 · 0 评论 -
spring cloud-前端跨域问题的解决方案
当我们需要将spring boot以restful接口的方式对外提供服务的时候,如果此时架构是前后端分离的,那么就会涉及到跨域的问题,那怎么来解决跨域的问题了,一般是在spring boot的主类中,增加一个CorsFilter@Beanpublic CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource so原创 2017-03-15 21:22:50 · 26495 阅读 · 10 评论 -
spring cloud-zuul的Filter详解
在前面我们使用zuul搭建了网关http://blog.csdn.net/liuchuanhong1/article/details/59056278关于网关的作用,这里就不再次赘述了,我们今天的重点是zuul的Filter。通过Filter,我们可以实现安全控制的,比如,只有请求参数中有用户名和密码的客户端才能访问服务端的资源。那么如果来实现Filter了?要想实现Filter,需要原创 2017-03-15 21:05:42 · 72479 阅读 · 35 评论 -
spring cloud中启动Eureka Server
一、新建工程二、工程结构三、修改配置文件# eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默认为true。由于当前这个应用就是Eureka Server,故而设为false# eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。因为这是一个原创 2017-01-22 10:01:57 · 24377 阅读 · 11 评论 -
spring cloud-将spring boot服务注册到Eureka Server上
开篇:我们将前面的springboot整合H2内存数据库,实现单元测试与数据库无关性提供的Restful服务注册到spring cloud的Eureka Server上。一、引入Eureka的Client org.springframework.cloudspring-cloud-starter-eurekaorg.springframework.clo原创 2017-01-22 10:26:55 · 10745 阅读 · 0 评论 -
spring cloud中使用Ribbon实现客户端的软负载均衡
开篇本例是在springboot整合H2内存数据库,实现单元测试与数据库无关性和使用RestTemplate消费spring boot的Restful服务两个示例的基础上改造而来在使用RestTemplate来消费spring boot的Restful服务示例中,我们提到,调用spring boot服务的时候,需要将服务的URL写死或者是写在配置文件原创 2017-01-23 10:37:09 · 44767 阅读 · 2 评论