
Spring系列
Spring、SpringMVC、Spring Boot、Spring Cloud等
抓手
这个作者很懒,什么都没留下…
展开
-
Spring Cloud ReactorServiceInstanceLoadBalancer 自定义负载均衡
然后在启动类加上注解,多个微服务在数组继续添加@LoadBalancerClient。原创 2025-03-28 16:55:20 · 359 阅读 · 0 评论 -
Spring @Value注解读取yml配置文件中的list和map
myConfig: userList: 张三,李四 userMap: '{"张三":"10","李四":"20"}'原创 2023-11-06 10:22:58 · 1892 阅读 · 0 评论 -
@Async 使用自定义线程池
@Async 注解的默认的线程池的核心线程数是8 ,工作队列长度是Integer.MAX_VALUE。如果直接使用默认的线程池有内存溢出的风险。原创 2023-07-24 10:29:37 · 731 阅读 · 0 评论 -
Spring SpringBoot启动时 @ComponentScan 排除指定Bean初始化
Spring SpringBoot启动时 @ComponentScan 排除指定Bean初始化。@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {OrderService.class, ProductService.class}))原创 2023-02-21 09:17:16 · 1461 阅读 · 0 评论 -
基于Spring Validation自定义校验注解
自定义一个校验注解,针对字符串参数校验,校验逻辑是字符串必须是"xzh"。String message() default "必须是xzh";Class原创 2022-11-23 17:19:55 · 2173 阅读 · 0 评论 -
Spring Cloud Gateway 使用 HystrixGatewayFilterFactory 熔断降级
{ "timestamp": "2022-08-16T01:23:11.939+0000", "path": "/user-server/open/a", "status": 504, "error": "Gateway Timeout", "message": "Response took longer than configured timeout"}原创 2022-08-16 09:31:13 · 1169 阅读 · 0 评论 -
Spring AOP 源码解析
代理模式很简单,接口 + 真实实现类 + 代理类,其中 真实实现类 和 代理类 都要实现接口,实例化的时候要使用代理类。所以,Spring AOP 需要做的是生成这么一个代理类,然后替换掉真实实现类来对外提供服务。...转载 2022-08-12 11:14:25 · 214 阅读 · 0 评论 -
Spring IOC 容器源码分析
Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。...转载 2022-08-12 10:51:01 · 258 阅读 · 0 评论 -
Spring Cloud Hystrix 线程池隔离参数配置
hystrix: command: default: execution: isolation: thread: # 请求超时时间 timeoutInMilliseconds: 30000 circuitBreaker: # 断路器请求量阈值,在时间窗口内达到阈值进行短路,默认20个 requestVolumeThreshold: 20 #原创 2022-07-25 18:25:56 · 1911 阅读 · 0 评论 -
PathMatchingResourcePatternResolver解析配置文件 资源文件
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();Resource resource = resourcePatternResolver.getResource("youResourcePath");原创 2022-07-25 11:43:18 · 2377 阅读 · 0 评论 -
Spring Cloud Gateway 过滤器执行流程(图)
Spring Cloud Gateway 过滤器执行流程原创 2022-07-22 14:37:51 · 388 阅读 · 0 评论 -
Spring Cloud 2020.0.0新特性以及主要变更点
从 Spring Cloud 2020.0.0-M1 开始,Spring Cloud 废除了这种英国伦敦地铁站的命名方式,而使用了全新的 "日历化" 版本命名方式:YYYY.MINOR.MICRO原创 2022-07-13 17:35:59 · 594 阅读 · 0 评论 -
AopContext.currentProxy() 解决本地调用通过SpringAOP切面处理事务、异步、日志等
AopContext.currentProxy()原创 2022-06-27 16:55:55 · 785 阅读 · 1 评论 -
Spring Cloud Gateway GatewayFilter自定义过滤器顺序
自定义一个抽象类,实现 GatewayFilter, Orderedimport org.springframework.cloud.gateway.filter.GatewayFilter;import org.springframework.core.Ordered;/** * @author 向振华 * @date 2022/02/08 14:11 */public abstract class GatewayFilterOrdered implements GatewayFilt原创 2022-02-08 14:22:32 · 2298 阅读 · 4 评论 -
Spring Cloud Gateway使用限流器
1.引入reactive redis maven坐标 <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dep原创 2021-08-10 11:42:07 · 992 阅读 · 4 评论 -
Spring源码中的设计模式
工程模式:Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象。 单例模式:Spring依赖注入Bean实例默认是单例的。Spring的依赖注入(包括lazy-init方式)都是发生在AbstractBeanFactory的getBean里。getBean的doGetBean方法调用getSingleton进行bean的创建。 装饰器模式:Spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorato原创 2021-04-18 11:42:02 · 625 阅读 · 3 评论 -
Spring Security OAuth2使用短信验证码登录
通过继承org.springframework.security.oauth2.provider.token.AbstractTokenGranter定义GRANT_TYPE=sms重写getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest)可以参考org.springframework.security.oauth2.provider.password.ResourceOwnerPasswordTokenG原创 2021-04-06 11:41:25 · 1962 阅读 · 4 评论 -
Eureka实现原理和自我保护机制简单介绍
Eureka是在Java语言上,基于Restful API开发的服务注册与发现组件,由Netflix开源。Eureka遵循AP原则。目前Eureka仅开源到1.X版本,2.X版本已经宣布闭源。Eureka采用的是Server/Client的模式进行设计:Server扮演了服务注册中心的角色,为Client提供服务注册和发现的功能,维护着注册到自身的Client的相关信息,同时提供接口给Client获取到注册表中其他服务的信息。 Client将有关自己的服务的信息通过一定的方式登记到Server上,原创 2021-03-31 15:30:28 · 620 阅读 · 0 评论 -
Spring IOC 容器启动过程
1.加锁,防止在refresh的时候出现启动或销毁容器的操作。synchronized (this.startupShutdownMonitor) 2.准备工作,记录下容器的启动时间、标记“已启动”状态、处理配置文件中的占位符。prepareRefresh(); 3.初始化BeanFactory,先创建DefaultListableBeanFactory实例,然后将配置信息解析成beanDefinition,并封装成beanName -> be...原创 2021-03-22 10:20:23 · 837 阅读 · 2 评论 -
Spring Cloud Gateway 过滤器执行顺序原理分析
过滤器类型GlobalFilter:全局过滤器,对所有路由生效。通过实现GlobalFilter接口创建GatewayFilter:网关过滤器,也可以说是局部过滤器、自定义过滤器,只对配置了此过滤器的路由生效。通过GatewayFilterFactory创建。过滤器会被执行两次,过滤分为pre和post。pre:请求前调用。post:响应结果返回时调用,顺序和pre完全相反,这里只讨论过滤器的pre执行顺序,post倒置过来就行了。先说结论结论网上的说法都不太准确,其实.原创 2021-03-12 17:26:19 · 12676 阅读 · 53 评论 -
oauth2内置接口清单
/oauth/token原创 2021-03-02 16:00:45 · 1557 阅读 · 0 评论 -
Spring Cloud Gateway 动态路由
1.定义路由模型import lombok.Data;import java.util.LinkedHashMap;import java.util.List;/** * 路由模型 * * @author 向振华 * @date 2021/02/04 10:26 */@Datapublic class RouteDefinitionDTO { /** * 路由的Id */ private String id; /** *原创 2021-02-04 10:53:48 · 376 阅读 · 12 评论 -
Spring Cloud Gateway 响应值获取,网关日志打印
1.请求过滤器,将请求体存入Attributes,解决请求体只能读一次的问题import com.bzcst.bop.gateway.common.Constant;import org.springframework.cloud.gateway.filter.GatewayFilterChain;import org.springframework.cloud.gateway.filter.GlobalFilter;import org.springframework.core.Ordered原创 2021-02-01 15:16:09 · 1421 阅读 · 2 评论 -
Spring Cloud Gateway 自定义全局异常处理
Spring Cloud版本:Finchley.SR2主要是重写源码异常处理类1.继承 DefaultErrorWebExceptionHandler.classimport com.poly.gateway.common.BusinessException;import com.poly.gateway.common.Constant;import org.springframework.boot.autoconfigure.web.ErrorProperties;imp..原创 2021-01-11 16:11:29 · 1354 阅读 · 0 评论 -
Spring Boot集成RocketMQ
引入RocketMQ <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.0.3</version> </dependency&g.原创 2020-12-30 13:53:19 · 515 阅读 · 0 评论 -
Spring Cloud版本发布计划说明
版本号 版本说明 用途 BUILD 开发版 快照(BUILD-SNAPSHOT),—股是开发团队内部用的 GA 稳定版 内部开发到一定阶段了,各个模块集成后,经过全面测试,发现没有问题了,可以对外发型了,这个时候就叫GA (AenrallyAvailable)版,系统的核心功能已经可以使用。意思就是基本上可以使用了。 PRE 里程碑版 由于GA版还不属于公开的发行版,里面还有功能不完善的或者一些BUG,于是就有了milestone(里程碑)版,mi原创 2020-12-29 16:26:26 · 371 阅读 · 0 评论 -
OAuth2登录接口返回自定义参数,并对异常翻译捕获
自定义通用返回类import lombok.Data;/** * 通用返回类 * * @author 向振华 * @date 2020/11/10 10:43 */@Datapublic class DataResult<T> { /** * 状态码(0:成功,1:失败) */ private int code; private String message; private T data; privat原创 2020-11-17 10:38:35 · 2008 阅读 · 0 评论 -
Spring Boot整合OAuth2,附详细注释
源码:https://github.com/xxiangzh/sso-server实例代码:import com.xzh.sso.common.SecurityConstants;import com.xzh.sso.exception.CustomWebResponseExceptionTranslator;import com.xzh.sso.granttype.ResourceOwnerSmsTokenGranter;import com.xzh.sso.service.User.原创 2020-11-17 10:37:43 · 563 阅读 · 0 评论 -
Hystrix的执行流程和原理
Hystrix是Netflix开源的一款容错框架。Hystrix[hɪst'rɪks],中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力。Hystrix工作原理图(来源:https://github.com/Netflix/Hystrix/wiki/How-it-Works)说明:1.构建一个HystrixCommand或者HystrixObservableCommand对象,将请求包装到Command对象中。2.执行命令。3.判断当前请求是否有缓存,如果在缓存中就直接返.原创 2020-10-29 17:14:38 · 1107 阅读 · 2 评论 -
客户端负载均衡-Ribbon
Ribbon 是由 Netflix 发布的负载均衡器,它有助于控制 HTTP 和 TCP 的客户端的行为。Ribbon 属于客户端负载均衡。为 Ribbon 配置服务提供者地址后,Ribbon 就可基于某种负载均衡算法,自动的帮助服务消费者进行请求。同时 Ribbon 默认为我们提供了很多负载均衡算法,例如:轮询、随机算法等。选择服务实例的过程:各组件介绍:ILoadBalancer:定义一系列的操作接口,比如选择服务实例。public interface ILoadBalanc.原创 2020-10-28 18:02:50 · 472 阅读 · 1 评论 -
Spring Cloud Gateway 解决使用动态路由后swagger失效
使用org.springframework.cloud.gateway.route.RouteDefinitionLocator获取路由信息,并封装到springfox.documentation.swagger.web.SwaggerResourceimport org.springframework.cloud.gateway.route.RouteDefinitionLocator;import org.springframework.cloud.gateway.support.Name.原创 2020-09-16 10:57:29 · 2550 阅读 · 0 评论 -
Spring Cloud Gateway 过滤器中直接返回错误结果信息
import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import com.poly.gateway.common.BusinessException;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.spri.原创 2020-09-16 10:39:29 · 5181 阅读 · 1 评论 -
Spring自动注入配置文件的四种方式
@Componentpublic class RobotUtils { private static String active; @Value("${spring.profiles.active}") public void setActive(String active){ RobotUtils.active = active; }}原创 2020-06-16 15:37:41 · 1484 阅读 · 1 评论 -
Spring容器启动完毕发布的刷新事件 ContextRefreshedEvent事件
写一个类实现ApplicationListener<ContextRefreshedEvent>接口@Servicepublic class Xzh implements ApplicationListener<ContextRefreshedEvent> {}并实现方法onApplicationEvent()方法onApplicationEvent 是...原创 2019-12-24 15:12:01 · 3273 阅读 · 0 评论 -
解决跨域问题
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web....原创 2019-11-07 13:41:40 · 1193 阅读 · 0 评论 -
SpringMVC的执行流程
转自:https://cloud.tencent.com/developer/article/1415712扩展:https://www.jianshu.com/p/8a20c547e245原创 2019-07-02 13:18:07 · 181 阅读 · 0 评论 -
HttpServletRequest防止流丢失
httpServletRequest中的流只能读取一次的原因:https://www.cnblogs.com/yepei/p/7011081.htmlimport org.aspectj.lang.annotation.Aspect;import org.springframework.context.annotation.Configuration;import org.spr...原创 2019-06-12 10:28:11 · 1306 阅读 · 0 评论 -
Spring Cloud Bus 消息总线(Finchley.RELEASE版)
1.引入依赖 <!--消息总线--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artif...原创 2019-05-20 15:45:36 · 255 阅读 · 0 评论 -
Spring Cloud Zuul 网关服务的fallback
当我们的zuul进行路由分发时,如果后端服务没有启动,或者调用超时,这时候我们希望Zuul提供一种降级功能,而不是将异常暴露出来。Spring cloud zuul提供这种降级功能,操作步骤如下:1.在主函数上添加@EnbaleZuulProxy注解。2.定义将降级类,并实现FallbackProvider接口。(在Dalston版本需实现ZuulFallbackProvider,在E...原创 2019-05-16 15:58:03 · 560 阅读 · 0 评论 -
Spring Cloud Zuul 网关服务整合Swagger2接口文档
准备工作先在项目中加入Swagger2文档:https://blog.youkuaiyun.com/Anenan/article/details/84315242网关服务的部署:https://blog.youkuaiyun.com/Anenan/article/details/90018948整合Swagger2在网关服务中引入 <!--swagger2-->...原创 2019-05-13 17:37:09 · 1164 阅读 · 0 评论