![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
Art pursuer
这个作者很懒,什么都没留下…
展开
-
Jackson的@JsonFilter过滤器扩展
使用场景: 使用jackson的序列化时各种前置操作,比如多语言翻译,序列化包装等等;直接上代码了1.注解JsonPropertyFilter@Target({ElementType.ANNOTATION_TYPE, ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface JsonPropertyFilter { Class<? extends JsonPropertyFilte原创 2021-08-02 11:01:31 · 1036 阅读 · 0 评论 -
@GroupSequenceProvider按关键字段分组嵌套校验
1.需要根据入参的某个值分组校验,并且支持嵌套分组校验2.ProductGeneral.class 普通商品public interface ProductGeneral {}3.ProductVirtual.class 虚拟商品public interface ProductVirtual {}4.ProductGroupSequenceProvider.class 分组校验public class ProductGroupSequenceProvider imp原创 2021-05-31 19:32:20 · 960 阅读 · 0 评论 -
Spring 优雅使用多例模式
1.多例模式使用场景?比如对商品的属性字段进行操作,此时属性对象的字段偏多,在上下文引用过程中使用频次较多时,使用多例模式会使代码更加优雅和高扩展2.LookupContext 生产多例对象的类@Componentpublic abstract class LookupContext { @Lookup("skuContext") public abstract SkuContext skuContext();}3.SkuContext sku的上下文引用@S原创 2021-04-08 10:20:41 · 1985 阅读 · 4 评论 -
Spring多版本控制管理,Swagger正常显示url路由
1.Controller版本控制流程:1.在controller类上添加@Version注解2.使用swagger或者postman访问接口2.实现代码1.注解Version.classimport java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation原创 2021-03-04 16:33:05 · 547 阅读 · 3 评论 -
版本控制维护数据最终一致性
在业务开发中,经常需要维护缓存和快照的数据最终一致性;备忘录模式:保存一个对象的某个状态,以便在适当的时候恢复对象。直接上代码吧!!!1.缓存相关接口CacheService.class 缓存接口定义public interface CacheService<T extends Version> { /** * 存redis缓存和版本号 * * @param t */ void saveCache(T t); .原创 2021-01-26 18:47:16 · 257 阅读 · 0 评论 -
自定义链模型执行流程
目标: 执行有顺序流程任务,可根据业务自动异动流程顺序上代码吧!!!1.上下文引用RequestContext.classpublic interface RequestContext<V> { V toView();}2.处理器定义ActionHandle.classpublic interface ActionHandle<Ctx extends RequestContext> { boolean execute(Ctx req.原创 2021-01-07 18:53:43 · 122 阅读 · 0 评论 -
依赖spring的链模型
1.链模型: 就是执行有顺序的过程;2.上代码吧TestService.classimport org.springframework.core.Ordered;public interface TestService extends Ordered { void execute();}Test1Service.classimport org.springframework.stereotype.Service;import lombok.extern.sl原创 2021-01-04 15:57:10 · 91 阅读 · 1 评论 -
Swagger2自定义注解提升个性化
使用场景: 需要改造swagger原有的注解,使其达到高扩展性;为什么写本文: 为了收拢header,不再使用单独的@RequestHeader传参,为了在swagger上良好的展现header直接上代码吧1.@ApiParams 注解import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;impo原创 2020-12-31 17:49:23 · 1278 阅读 · 0 评论 -
策略模式+模板模式让代码更优雅
模式将一些列有一些列共性的功能代码抽离出来,使代码变得优雅和高扩展;应用场景: 多地区菜单差异化,多地区价格计算等等直接上代码吧!!!1.输入参数对象定义父类:import lombok.Data;import lombok.experimental.SuperBuilder;@SuperBuilder@Datapublic class MenuParam { private String regionCode;}中国地区子类:import lombo原创 2020-12-28 14:27:06 · 274 阅读 · 1 评论 -
采用Filter修改Request请求的header
修改Request请求的请求头,该篇文章主要修改header的Accept-Language的值,直接上代码吧import java.io.IOException;import java.lang.reflect.Field;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;原创 2020-12-15 11:31:58 · 1958 阅读 · 1 评论 -
elasticsearch使用restHighLevelClient查询所有数据
elasticsearch使用restHighLevelClient查询分页数据1.maven <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.4.3</version>原创 2020-12-04 13:41:59 · 7983 阅读 · 0 评论 -
spring data mongodb 查询返回指定字段
spring data mongodb 查询返回指定字段查询: Query query=Query.query(Criteria.where("productId").is(1)); query.fields().include("productId")); Product product = mongoTemplate.findOne(query,Product.class); System.out.println(product);...原创 2020-09-25 10:27:54 · 1061 阅读 · 0 评论 -
mongodb存储geoJson
在业务需求中,需要对地理坐标进行存储,mongodb是一种很好的选择,因为它提供了许多关于地理位置的方法,但是它提供的GeoJson却是一个接口,当然也提供了对应的点、线、面的实现类,不过在业务需求中,往往需要前端传一个GeoJson数据格式,后端做一个点、线、面的适配,已达到简单使用,简单存储的功能;基于上面的场景,写了这篇文章,下面就贴代码了(关于maven及mongdb的配置下面就不贴了,只贴核心代码)1.首先自定义一个GeoJson类@Datapublic class CustomGeoJs原创 2020-07-09 09:40:29 · 1779 阅读 · 0 评论 -
全球化时区处理
概念1.相对时间和绝对时间相对时间: “yyyy-MM-dd HH:mm:ss” 或 “HH:mm”;绝对时间: “yyyy-MM-dd HH:mm:ss” + timezone 或 timestamp;怎么做1. 数据库字段类型相对时间:datetime,date,time;绝对时间:timestamp;2. java【实体类】时间字段类型相对时间:java.lang.String;绝对时间:java.time.Instant;3. instant使用原创 2020-07-09 09:28:21 · 1841 阅读 · 0 评论 -
springboot实现i18n国际化翻译
springboot实现i18n国际化翻译github:https://github.com/java-joker/i18n转载需指明出处原创 2020-06-24 10:56:06 · 1709 阅读 · 3 评论