Springboot
文章平均质量分 92
PostTruth
书写是对思维的缓存
展开
-
记一次API 接口定义 添加 @ApiOperation 注解触发中间件 bug 问题分析
API 接口定义 添加 @ApiOperation 注解触发中间件 bug 问题分析背景我有一个服务 A ,写了一个接口定义如下:@RequestMapping({"/config/coupon"})public interface CouponOperateTaskService { @PostMapping({"/list"}) @ApiOperation("优惠券操作任务列表") BizPageResponse<CouponOperateListRespo原创 2022-02-28 17:07:04 · 2552 阅读 · 1 评论 -
@FeignClient 上传文件时报错 解决方案
Feign 作为 Spring Cloud 中 RPC 工具,利用注解来描述接口,简化了 Java HTTP Client 的调用过程。但是在文件上传时,我们需要做一些额外的配置,不然会调用异常。背景我有一个服务 A,里面有个接口,需要接受上传的文件和一些参数, @PostMapping({"/validityPeriod/update"}) BizResponse proofValidityPeriodUpdate(@Validated ValidityPeriodUpdateRequest原创 2022-02-28 17:06:07 · 2368 阅读 · 0 评论 -
Spring Boot 的 @Value 注解用法详解
一、前言在日常开发中,经常会遇到需要在配置文件中,存储 List 或是 Map 这种类型的数据。Spring 原生是支持这种数据类型的,以配置 List 类型为例,对于 .yaml 文件配置如下:test: list: - aaa - bbb - ccc对于 .properties 文件配置如下所示:test.list[0]=aaatest.list[1]=bbbtest.list[2]=ccc当我们想要在程序中使用时候,想当然的使用 @Value 注解去读取这原创 2022-01-04 17:17:53 · 1643 阅读 · 0 评论 -
DIP , DI , IoC 傻傻分不清?
一张图看懂 DIP , DI , IoC 的关系Design Principle vs Design PatternIn software engineering, design principle and design pattern are not the same.Design PrincipleDesign principles provide high level guidelines to design better software applications. They do not原创 2020-09-05 15:57:31 · 505 阅读 · 0 评论 -
AOP,Spring AOP ,Aspectj,CGLIB 傻傻分不清?
一张图看懂 AOP,Spring AOP ,Aspect,CGLIB的关系 !Spring AOP , AspectJ , CGLIB 概念AOPAOP(Aspect Orient Programming) 作为面向对象的一种补充,广泛用于处理具有横切性质的系统级服务,如 事务,安全检查,缓存,对象池管理等。AOP 实现的关键就在于 AOP 框架自动创建代理对象,AOP 代理可分为 静态代理 和 动态代理 两大类,静态代理在编译阶段就可以生成代理类,因此也称为 编译时增强;动态代理 在运行原创 2020-09-05 15:41:20 · 855 阅读 · 4 评论 -
延时队列的几种实现方式
延时队列的几种实现方式何为延迟队列?顾名思义,首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费。延时队列能做什么?延时队列多用于需要延时工作的场景。最常见的是以下场景:延迟消费,比如:1 ,订单成功后,在 30 分钟内没有支付,自动取消订单2 ,如果订单一直处于某一个未完结状态时,及时处理关单,并退还库存3 ,支付成功后, 2 秒后查询支付结果4 , ……如何实现?实现延时队列的方式有很多种,本文主要介绍以下几种常见的方式:原创 2020-07-10 16:57:56 · 8609 阅读 · 5 评论 -
实用:如何将aop中的pointcut值从配置文件中读取
背景改造老项目,须要加一个aop来拦截所的web Controller请求做一些处理,由于老项目比较多,且包的命名也不统一,又不想每个项目都copy一份相同的代码,这样会导致后以后升级很麻烦,不利于维护。于是我们想做成一个统一的jar包来给各项目引用,这样每个项目只须要引用该jar,然后配置对应的切面值就可以了。我们都知道,java中的注解里面的值都是一个常量, 如:@Pointcut("e...原创 2019-12-02 11:24:12 · 2261 阅读 · 0 评论 -
Spring 使用 @Transactioal 不会回滚的几种情况
Spring 使用 @Transactioal 不会回滚的几种情况对 Spring 的基于注解方式的实现步骤和事务内在实现机制有较好的理解之后,就会更好的使用注解方式的事务管理,避免当系统抛出异常,数据不能回滚的问题。正确的设置@Transactional 的 propagation 属性需要注意下面三种 propagation 可以不启动事务。本来期望目标方法进行事务管理,但若是错误的配置...原创 2019-11-26 17:09:32 · 669 阅读 · 0 评论 -
从 Spring Cloud 看一个微服务框架的「五脏六腑」
从 Spring Cloud 看一个微服务框架的「五脏六腑」Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件。注:Spring Boot 简单理解就是简化 Spring 项目的搭建、配置、组合的框架。因为与构建微服务本身没有直接关系,所以本文不对 Spring Boot 进行展开。另外本文有一些例子涉及到 Spring 和 S...转载 2018-11-15 21:37:50 · 277 阅读 · 1 评论 -
Spring Boot 如何解决项目启动时初始化资源
在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作。这个神器就是 CommandLineRunner,CommandLineRunner 接口的 Component 会在所有 Spring Beans都初始化之后,SpringApplicat...原创 2018-12-12 16:37:18 · 10475 阅读 · 0 评论 -
java开发中关于使用异常控制业务逻辑的理解
服务层返回错误信息,大体分为两派ResultModel(code,message),使用if、else判断。抛出自定义exception,异常控制逻辑。查看《阿里巴巴编码规约》中对异常处理的强制要求,不建议使用异常来做流程控制,如下:第二种方法的效率较低,因为会有堆栈信息的创建与输出。好处是逻辑代码清晰,无需各种判断。改进方式,覆写fillInStackTrace(),防止出现性...原创 2018-12-29 17:26:18 · 4611 阅读 · 1 评论 -
Spring RestTemplate远程调用结果返回 LinkedHashMap 的问题及解决方案
先来说原因:因为rpc远程调用在底层还是使用的HTTPClient,所以在传递参数的时候,必定要有个顺序,当你传递map的时候map里面的值也要有顺序,不然服务层在接的时候就出问题了,所以它才会从map转为linkedhashMap!spring 有一个类叫ModelMap,继承了linkedhashMap public class ModelMap extends LinkedHashMap...原创 2019-01-16 15:46:21 · 8260 阅读 · 0 评论 -
如何对Spring 的 Resttemplate 调用进行拦截?
Spring RestTemplate经常被用作客户端向Restful API发送各种请求,也许你也碰到过这种需求,很多请求都需要用到相似或者相同的Http Header。如果在每次请求之前都把Header填入HttpEntity/RequestEntity,这样的代码会显得十分冗余。对restTemplate 不熟悉的可以看我的这篇文章 :详解 RestTemplate 操作Spring...原创 2019-03-06 21:29:28 · 2566 阅读 · 0 评论 -
什么情况下使用 lombok Builder构建器?
什么情况下使用 lombok Builder构建器?很久之前,我在《effective java》上看过Builder构建器相关的内容,但实际开发中不经常用。后来,在项目中使用了lombok,发现它有一个注解“@Builder”,就是为java bean生成一个构建器。于是,回头重新复习了下相关知识,整理如下。1. lombok使用样例// 创建名为Officer的java bean@B...原创 2019-03-19 17:02:33 · 1527 阅读 · 0 评论 -
详解 Spring Session 架构与设计
前言开始进行 Web 开发时,我们可能会遇到这样的情况,Web 容器(例如 Tomcat、Jetty)包含 Session 的实现,当服务器重启之后,之前的登录状态会失效需要重新登录。又或者你的应用程序部署了不止一台机器,用户在机器A上登陆之后,来到机器B又需要重新登陆,因为机器A的 Session 在机器B 是没有的。在解决这两个问题之前,我们先来重新了解下 HTTP 协议的相关知识。HT...原创 2019-06-06 17:22:49 · 5035 阅读 · 1 评论 -
Spring AOP 实现分布式锁/保证接口幂等性
https://www.ibm.com/developerworks/cn/java/j-spring-boot-aop-web-log-processing-and-distributed-locking/index.html原创 2019-06-11 17:04:32 · 1821 阅读 · 0 评论 -
还在业务中用if else,策略模式了解一下
if elseif ("BATCH_CHANGE_WAREHOUSE".equals(taskType)) { //批量转仓逻辑 } else if ("BATCH_CHANGE_SHIPPING".equals(taskType)) { //批量转快递逻辑 } else if ("BATCH_REPLACE_ORD...转载 2019-09-02 11:56:52 · 373 阅读 · 0 评论 -
SpringBoot全局异常与数据校验
SpringBoot全局异常与数据校验要思考的问题在现在的前后端交互中,通常都规范了接口返回方式,如返回的接口状态(成功|失败)以及要返回的数据在那个字段取,或者说失败了以后提示信息从接口哪里返回,因此,如果想做全局异常,并且异常发生后能准确的返回给前端解析,那么需要异常发生时返回给前端的格式与正常失败场景的格式一致。项目建立利用idea 工具,很容易的搭建一个SpringBoot项目,要...原创 2018-11-15 20:09:45 · 520 阅读 · 0 评论 -
RedisTemplate和StringRedisTemplate的区别
总结:当你的redis数据库里面本来存的是字符串数据或者你要存取的数据就是字符串类型数据的时候,那么你就使用StringRedisTemplate即可,但是如果你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象,那么使用RedisTemplate是更好的选择。...原创 2018-08-23 15:08:53 · 847 阅读 · 0 评论 -
使用自定义注解+Spring AOP 实现日志记录
使用自定义注解+Spring切面 实现日志记录在平常的项目编程中,我们会经常使用到日志,用来记录各种事件.但是,有些日志记录套路实在是太像了,我们不得不要写很多遍.比如在Spring中,我们要使用日志记录每个controller的访问和结束时间,该怎么办呢.下面是我认为比较简单的一种方法: 自定义注解+Spring切面 .下面使用SpringBoot快速搭建一个项目来进行演示.具体pom文件查看源原创 2017-12-09 11:01:38 · 9534 阅读 · 1 评论 -
fastJson 之 JSONPath使用
1. JSONPath介绍官网地址: https://github.com/alibaba/fastjson/wiki/JSONPathfastjson 1.2.0之后的版本支持JSONPath。这是一个很强大的功能,可以在java框架中当作对象查询语言(OQL)来使用。2. APIpackage com.alibaba.fastjson;public class JSONPath {原创 2017-12-10 12:47:33 · 37606 阅读 · 5 评论 -
SpringBoot 统一异常处理--- @ControllerAdvice 使用
参考慕课网地址: Aop之统一异常处理 http://www.imooc.com/learn/810SpringBoot 统一异常处理— @ControllerAdvice 使用使用Spring MVC的@ControllerAdvice注解做Json的异常处理在实际项目中经常会抛出各种各样的异常,有时候需要对异常信息进行统一处理,以友好正确的形式返回给调用方.使用Spring MVC的@Cont原创 2017-12-02 16:11:20 · 3015 阅读 · 0 评论 -
使用Spring boot基于Redis快速搭建分布式Session缓存方案
使用Spring boot基于Redis快速搭建分布式Session缓存方案大型web应用中,session的管理非常重要,这是单机存储满足不了的.通常有以下几种方法:将session持久化到数据库中. 但缺点是读写成本太高.去session化,比如将信息存储到cookie中. 但缺点是大小有限制,并且不安全.3 . 将session存储到一个分布式的nosql数据库中,比如 Redis.接下原创 2017-12-07 11:24:09 · 1503 阅读 · 0 评论 -
Spring MVC 表单验证
Spring 表单验证从Spring3.0开始,在Spring API 中提供了对java校验API的支持.在Spring MVC 中要使用java校验API的话,并不需要而外的配置,只要保证在类路径下包含这个java API的实现即可.比如: Hibernate Validator.参考资料: http://www.imooc.com/learn/810http://gitbook.cn/gitc原创 2017-12-07 15:30:41 · 462 阅读 · 0 评论 -
详解 RestTemplate 操作
详解 RestTemplate 操作作为开发人员,我们经常关注于构建伟大的软件来解决业务问题。数据只是软件完成工作时 要处理的原材料。但是如果你问一下业务人员,数据和软件谁更重要的话,他们很可能会选择 数据。数据是许多业务的生命之血。软件通常是可以替换的,但是多年积累的数据是永远不能 替换的。近几年来,以信息为中心的表述性状态转移(Representational State Transfer原创 2017-12-17 15:39:08 · 208897 阅读 · 30 评论 -
SpringBoot JPA 多数据源的使用
Spring Data JPA 注: 由于本文卸载github上,图片也都是在github上存储,这里指示引用了github图片地址. 可以去github去看完整的文章和源码:地址:https://github.com/itguang/weixin_sell/blob/master/weixin_sell/Spring%20Data%20JPA%E7%9A%84%E4%BD%BF%E7%94%A原创 2017-12-08 09:12:06 · 11642 阅读 · 5 评论 -
Spring Data JPA
首先了解 JPA 是什么?JPA(Java Persistence API)是 Sun 官方提出的 Java 持久化规范。 它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术, 结束现在 Hibernate、TopLink、JDO 等 ORM 框架各自为营的局面。 值得注意的是,JPA 是在充分原创 2017-12-08 09:22:02 · 1961 阅读 · 1 评论 -
一篇文章带你搞懂 SpringBoot与Swagger整合
Swagger使用 由于不喜欢csdn的markwoen编辑器,对代码样式支持不好,看着不舒服,对审美要求比较高的同学移步github:https://github.com/itguang/swagger/tree/master/springboot-swagger-demo1 不知道怎么调整csdn的代码样式,有高人知道,请私信我一下.Swagger有什么用?sw原创 2018-01-05 10:35:07 · 27911 阅读 · 7 评论 -
ElasticSearch 初识
elasticsearch官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html基本概念索引: 还有相同属性的文档集合(好比一个数据库)类型:索引可以定义一个或者多个类型,文档必须属于一个类型(相当与一张表)文档: 文档是可以被索引的基本数据单位(相当于一条数据)和索引相关的...原创 2018-03-20 21:30:06 · 395 阅读 · 0 评论 -
配置maven阿里云仓库,不用去改maven的setting
配置maven阿里云仓库开始,不用去改maven的setting如下配置: &lt;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/...原创 2018-07-04 08:56:43 · 2533 阅读 · 0 评论 -
SpringBoot日志配置
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程Spring Boot 内部采用的是 Commons Logging进行日志记录,但在底层为 Java Util Logging、Log4J2、Logback ...原创 2018-07-04 10:23:31 · 546 阅读 · 0 评论 -
SpringBoot轻松搞定全局异常
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程实际项目开发中,程序往往会发生各式各样的异常情况,特别是身为服务端开发人员的我们,总是不停的编写接口提供给前端调用,分工协作的情况下,避免不了异常的发生...原创 2018-07-04 10:38:08 · 2027 阅读 · 0 评论 -
SpringBoot配置详解
SpringBoot 虽然干掉了 XML 但未做到 零配置,它体现出了一种 约定优于配置,也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。 一般情况下默认的配置足够满足日常开发所需,但在特殊的情况下,我们往往需要用到自定义属性配置、自定义文件配置、多环境配置、外部命令引导等一系列功能。不用担心,这些 SpringBoot 都替我们考虑...原创 2018-07-04 15:22:06 · 656 阅读 · 0 评论 -
Spring Boot定时器
Spring Boot定时器 源码地址: https://github.com/itguang/springbootLearn/tree/master/springboot_09在我们的项目开发过程中,经常需要定时任务来帮助我们来做一些内容,springboot默认已经帮我们实行了,只需要添加相应的注解就可以实现开启定时器在启动类上面加上@EnableScheduling即可开启定时@Spr原创 2017-11-04 14:36:40 · 560 阅读 · 0 评论