函数重试方案比较
#### 前言 日常开发中 不仅仅在rpc调用的时候 需要重试啥的 有时候 接第三方系统 也得做一些重试的处理 之前一直都是自己利用function写了一个工具类 现在把自己写的基本思路 和 guava retry 和spring retry 一起记录一下 方
#### 前言 日常开发中 不仅仅在rpc调用的时候 需要重试啥的 有时候 接第三方系统 也得做一些重试的处理 之前一直都是自己利用function写了一个工具类 现在把自己写的基本思路 和 guava retry 和spring retry 一起记录一下 方
#### 前言 公司有个使用spring-boot schedule模块的定时任务偶尔不执行 查看类一些文档和部分源码 发现spring boot schedule模块还是有点坑的 1:如果是单线程执行 当错过执行时间 就不会在执行任务 并不是想象中的阻塞等待执行
####thymeleaf 虽然现在大部分项目 更加倾向于前后端分离 但是有时候身为后端工程师 总想手贱写点小东西 但是jsp 又比较老 而且需要web容器支撑 spring boot 支持性太差 所以还是用spring boot 推荐的thymeleaf 可是 jsp中的siteMesh装
#### 前言 身为闲不住的人,总是想搞事 但是又懒得学vue之类的前端框架技术 只好利用学学后端的一些模板引擎技术 来过过手瘾 在远古时代 可以直接用jsp来做 但是spring boot 2.x 引入webflux 这种非标准java servlet容器
#### 前言 由于feign底层默认使用 jdk的UrlConnection来发送http请求 没有连接池之类的 很麻烦 而且bug很多 性能也差 经过查看文档和网络上大佬们的博客 发现可以使用 常用的http工具包去替换 如apache的httpClient 、okHttp等
#### 前言 在分布式环境中 一般数据id 都是全局唯一 拥有特定的生成规则 一般都是从专门的取号中心 取的 所以jpa中为了全局统一处理 id生成 也提供了扩展方案 > 此处取jpa hibernate实现处理 #### 示例 ##### hibernate 6.5
分类: 实战
标签: spring boot mvc 实战 messageConverter
创建时间:2018-05-22 17:30:48.0
修改时间:2018-05-22 17:30:48.0
#### 前言 最近项目中通过feign调用内部服务和其他系统服务猛然增多 在messageConverter这一环节出现n多问题 什么xml解析gg 什么json 时间格式解析gg 什么乱七八糟的骚格式的数据解析gg 导致最近一直在作在messageConverter这
#### 前言 由于要提升安全性和b格 有些项目 访问的时候 必须要求 https协议来访问 一般 情况下 nginx是外层的入口 或者 直接是tomcat 是入口 只要配置nginx和tomcat 即可 #### 证书获得方式 ##### 证书类型介绍 https://www.wosign.com/f
#### 前言 spring boot 默认打包方式为fatjar 依赖包+源码一起打包 这种方式简单粗暴 不过在一些需要减少更新文件大小的地方 还是需要拆分处 lib和源码 #### 示例 参考网站: 1. https://blog.csdn.net/u013314786/article/details/81120240 2. http
###spring boot中 在某些配置的时候肯定是需要自定义配置的 spring boot 默认显示配置覆盖默认配置 所以只需要符合spring boot的配置环境 ###能够覆盖默认配置的配置位置 1:命令行参数(如直接命令行启动某个jar 后面附带的命令) 2:
#### 前言 spring虽然也有事件 但是麻烦 大多数情况下 guava的event足够使用 需要高性能 可以采用disruptor 參考: {% post_link java/disruptor使用笔记 %} {% post_link 综合应用/基于disruptor实现简单topic分发消息功能 %} #### 实战
###ribbon负载均衡 必须存在 ``` @Bean @LoadBalanced//通过再restTemplate中添加拦截器 实现负载均衡、重写uri等功能 RestTemplate restTemplate(){ return new RestTemplate(); } ``` #### ServiceInstanceChooser 服务实例选择 choose 根
在使用SpringBeanManager工具类的时候 发现 spring boot 是根据目录取扫描装配bean 的 由于我把 这个工具类放在com.ming.core.utils下 导致 这个加载顺序在一些初始化服务之后 看了一下相关资料 有四种解决方法 * 在配置中调整顺序
#### 前言 懒得自己手写api 干脆让他根据包名、类名 函数名自动生成算了 #### 思路 * 自定义注解 注册到spring ioc容器中 * 借助原本requestMapping及其衍生的注解来为接口除了地址以外的属性做处理 如method con
###步骤 1:使用spring boot cli 生成基本项目 2:写dao、controller层代码 3:写thymeleaf 模板 ###1:初始化项目 spring init -dweb,data-jpa,h2,thymeleaf 下载demo.zip解压 改名springboot (任意名称) 刷新maven 下载jar包构建项目 ###2:dao、controller层代码 e
#### 配置mvc相关参数的类 常用的 也就是如下三种方法 如果需要使用spring boot 中默认实现 请选则第三种方式 避免覆盖spring boot 实现 * @EnableWebMvc+extends WebMvcConfigurationAdapter,在扩展的类中重写父类的方法即可,这种方式会屏蔽s
#### 前言 swagger用起来还是很爽的 直接内嵌代码中 前端老师也能看到最新的文档 也能直接测试访问 减少撕b的机会 spring boot1.x 集成swagger2.x 就不用说了 spring boot2.x 由于多了个 webflux swagger在3.x的时候 也做出适配 分别为
#### 前言 最近要调整应用启动的时候做一些功能 例如加载缓存、通知集群服务可用性等 顺手把spring 应用加载相关的事件做个笔记 参考文档: https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/spring-boot-features.html#boot-f
#####jpa扩充jpaRepository接口的方法 1:定义一个接口 继承于 JpaRepository 2:定义接口实现类 3:定义 接口加载工厂方法 4:repository 继承自定义接口 5:启动类使用 自定义加载工厂 ####1:定义扩充方法接口 ``` /** * 基于jpa的默认jpaRep
####全局异常处理 在web中 异常也分为系统异常和业务异常 可以通过增强控制器 来对异常进行全局处理 1:创建业务异常类 ``` import lombok.Data; import java.util.Map; /** * 自定义服务异常 * * @author ming * @date 2017-06-24 */
#### 前言 系统中 定时任务肯定会有 根据项目大小 去正确的选择定时器的相关实现 是非常有必要的 在大型项目中 一般会选择 quartz、elastic job之类的分布式定时框架 或者基于一些环境上的定时功能去实现 如k8s的定时任务、lin
### 配置中心 在分布式 环境中 配置中心是必不可少的一个组件 不管是国内的 disconf 、Apollo之类 还是spring cloud的config server 都是一个套路 将配置统一管理 通过namespace、项目名称之类的 进行区分 加入一些操作审计、配置加密
#### quartz 集成 到spring boot 中 有个偷懒的方法 直接引用 这个 但是这个不是spring组织搞 的 1:gradle 依赖配置 ``` buildscript { ext { springBootVersion = '1.5.8.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springfr
#### 前言 从个人角度来说 我更加喜欢jpa 因为是正儿八经的orm框架 很多时候 只需要处理java代码即可 不需要去梭sql 虽然真正去梭sql 性能更好 也更加灵活 可以使用各种各样的操作 如果项目是做一些复杂的查询 我觉得mybati
#### 前言 druid连接池 没啥好说的 的确好用 虽然极限性能可能跟 hikari低点 但是功能多啊 各种基本sql监控 、扩展等等 > https://github.com/alibaba/druid > https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 #### 实例 >
##步骤 1:安装spring boot cli 2:利用spring boot cli初始化项目 3:写一个helloworld控制器 ##1:安装spring boot cli spring boot cli是spring boot的一个操作工具 可以直接利用这个工具去生成 管理spribg boot项目 在这里去寻找合适的版本下载解压
eureka客户端: * 服务注册相关配置 注册的中心、心跳、注册信息缓存时间 org.springframework.cloud.netflix.eureka.EurekaClientConfigBean * 服务实列配置信息 服务实列的名称、地址、健康检查路径 org.springframework.cloud.netflix.eureka.EurekaInst
#### 前言 做项目的时候 总是会遇到各种各样需要启动处理的需求 例如加载热数据、初始化环境、等等 spring boot 也提供了很多初始化的口子 这里干脆统一记录一下 方便后续查阅 #### 方案比较 |名称|说明|备注| |:---|:
#### 前言 cache可以说是后端提高响应速度、承载能力的标准套路了 spring boot中提供spring boot starter cache 组件 配合spring boot starter redis 或者其他缓存组件 可以很简单的使用缓存 #### spring cache 介绍 一套基于spring aop的方式 为函
#### 前言 spring boot升级到2.x之后 对于request和response的增强方式发生了变化 由于spring boot2.x 不仅仅有servlet标准容器 还有一些其他类型的容器 如netty #### 实例 ##### 增强request 继承ServerHttpRequestDecorator 实现对于 serverHttpRequ
####spring boot 打包成docker image 会更加方便使用 1:配置编译jar选项 2:配置maven docker 插件 3:上传到私服 4:自动化脚本 ####配置编译jar 如果是继承spring boot 的pom 直接如下配置即可 ``` <plugin> <groupId>org.springframework.boot</groupId>
#### 指定前后端传输数据格式 在前后分离项目中 最麻烦的应该就是 前后端工程师对接 后端通过添加mvc消息转换器 返回更加符合前端的数据格式 这个数据格式 不是说返回的格式 而是 某些类型的数据的处理 例如 date 可以
###actuator 是spring boot 提供的一个监控的工具 直接访问 相应端点(rest 接口) 端点分为三种: * 应用配置类 /autoconfig 获取应用的自动配置相关参数 /beans 获取应用的所有bean /configprops 应用中配置的属性信息 设置enable
##1:resource接口 ###### Resource是spring 中加载资源的顶级接口 主要方法有: * boolean exists(); 是否存在资源 * boolean isOpen(); 资源是否打开 是否开启 * URL getURL(); 返回可抽象成url的资源的URL对象 * FIle getFile();返回底层资源的文件流
###在使用spring boot的时候 spring本身会根据springboot的版本引入依赖包 跟maven一样有隐藏依赖会自动引入这个时候如果不需要其中一些工具包 或者需要指定某些包的版本 可以通过maven的功能去排除依赖和覆盖依赖 ##排除依赖 通
####全局处理json数据返回格式 在前后端分离中 前后端为了更好的交互 应该指定一个较为通用的数据返回格式 基本上都是code+data 方式返回 在spring mvc 中通过对controller全局增强 来进行处理 1:制定 返回json数据返回大致格
公司想切换到spring cloud上所以我找了本书看看 大致上知道了spring cloud的各部分组件 也算是用的比较熟练了 但是好记性不如烂笔头 所以写一波笔记 防止遗忘 ####目录 * 综述 * 注册中心(eureka、consul、zk) * 微服务服务端、
在使用spring 中总有地方要求获取bean或者注册bean 所以找了部分资料 抄袭了几波 合并成如下工具类 主要功能 : * 获取bean * 手动注册bean * 删除手工注册的bean ``` package com.ming.utils; import com.google.common.collect.Maps; import org.ap
#### 前言 在spring mvc中 使用@ControllerAdvice + @ExceptionHandler 可以做到mvc级别的异常拦截 但是涉及到容器级别 如tomcat 或者netty构建web容器中 无法拦截filter级别的异常 mvc级别的全局异常拦截笔记: {% post_link spring/springboot-mvc返
#### 前言 在spring boot web项目中 会有一些需求 要求 对 请求之前的信息和返回给请求方信息进行预处理 如 参数、响应信息加密 解密操作 , 记录请求参数和响应信息日志 等操作 原本的httpServletRequest,httpServletResponse 对这些操
#### 前言 spring boot 默认内嵌是tomcat 如果只是想最简单提升一下性能 可以把tomcat 换成 undertow 至于哪里强 可以看看一些web服务器对比 undertow还是很能打的 > https://undertow.io/ #### 示例 ##### 依赖 ```xml <sp