logo头像
Snippet 博客主题

Spring Cloud-Zuul核心过滤器及异常处理

百家技术,谈笑古今.今天我们不讲三国,我们讲一讲微服务网关中的一些细节:Zuul过滤器. Zuul过滤器Spring Cloud中的Zuul为我们提供了统一对外,路由转发和过滤拦截的强大功能.在Spring Cloud Zuul中实现的过滤器必须包含4个基本特征:过滤类型,执行顺序,执行条...

自定义一个Spring Boot Starter

我们可以模仿之前http编码自动配置的例子也协议一个starter,目的是为了降低耦合性.虽说可以降低程序依赖之间的耦合性,但是我们不建议自己定义starter,因为Spring Boot或其他社区已经提供了大部分的starter,可以满足我们日常的需求.本篇博文主要为了让大家更好的理解Spr...

Spring Boot自动配置原理剖析

神奇魔法-自动配置前篇文章讲述了Spring 4 条件注解,其实Spring Boot自动配置神奇实现也是基于这一原理的.若想知道Spring Boot为我们做了哪些的自动配置,可以查看这里的源码.可以通过以下三种方式查看项目中已启用和未启用的自动配置报告. 运行jar时增加–debug参数...

Spring条件注解@Conditional

@Conditional注解Spring 4提供了一个基于条件的Bean的创建,即使用@Conditional注解.@Conditional根据满足某一个特定条件创建一个特定的Bean.比如说,当某一个jar包在一个类路径下的时候,自动配置一个或多个Bean;或者只有某个Bean被创建才会创建...

Spring容器以及Bean的生命周期

Spring容器容器是Spring框架的核心.Spring容器使用DI管理构成应用的组件,他会创建相互协作的组件之间的关联.Spring容器并不是只有一个.Spring自带多个容器实现,可归纳为两种不同的类型: Bean工厂(由BeanFactory接口定义)是最简单的同期,提供基本的DI支...

单例模式-Spring单例实现原理分析

在Spring中,被@Scope注解修饰Bean默认是单例模式的,即只有一个实例对象,多次获取Bean会拿到同一个对象. 单例注册表Spring采用单例注册表的特殊方式实现单例模式.首先自己写个单例注册表.我们可以通过Map缓存单例对象,实现单例注册表.值得注意的是,采用ConcurrentH...

线程切换导致ThreadLocal数据丢失分析

最近在使用Spring Cloud过程中,经常会遇见线程隔离(切换).导致ThreadLocal数据丢失.例如调用其他服务获取不到Threadlocal没有数据,服务之间传递请求头传递失败.通过查阅相关文档才发现:用Hystrix实现断路器,Zuul中默认使用的是信号量,其他默认都是线程隔离....

浅谈匿名函数,Lambda和闭包(Closure)

几乎所有的主流编程语言都对函数式编程有支持,我所用过的比如Java8的Lambda表达式,JavaScript和Groovy语言的闭包(Closure)等,其他的类似于Object-C的block,python的Lambda和C++11,看到这些,我都有点眩晕想吐的感觉. 匿名函数,Lambd...

Spring Cloud-使用高性能的OkHttp库

最近在做项目优化,研究了Spring Cloud底层源码,Http请求库默认是Apache HttpClient或者JDK自带的HttpURLConnection库.Java标准库提供了HttpURLConnection类来支持HTTP通讯。不过HttpURLConnection本身的API不...