springboot集成字典注解

又是想下班的一天

文章目錄

  • 前言
    • springboot使用AOP簡單集成字典注解
  • 一、通過注解進行字典賦值
  • 二、使用步驟
    • 1.添加注解
    • 2.序列化處理類
    • 3.實體類添加注解
    • 4.json返回值
  • 總結


前言

springboot使用AOP簡單集成字典注解

一、通過注解進行字典賦值

使用AOP切面實現字典的賦值,自動將code轉換為name,減少工作(偷懶)

二、使用步驟

1.添加注解

代碼如下(示例):

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.springblade.modules.system.serialize.DictBizOneSerialize;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** @author hua* @description*/@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@JsonSerialize(using = DictBizOneSerialize.class) 
public @interface DictBizOne {String type();
}

2.序列化處理類

代碼如下(示例):

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.cache.DictBizCache;
import org.springblade.modules.system.annotation.DictBizOne;import java.io.IOException;
import java.util.Objects;/*** @author hua* @description*/
@Slf4j
public class DictBizOneSerialize extends StdSerializer<Object> implements ContextualSerializer {//字典注解private DictBizOne dict;public DictBizOneSerialize() {super(Object.class);}public DictBizOneSerialize(DictBizOne dict) {super(Object.class);this.dict = dict;}private String type;@Overridepublic void serialize(Object value, JsonGenerator gen, SerializerProvider provider) throws IOException {if (Objects.isNull(value)) {gen.writeObject(value);return;}if (Objects.nonNull(dict)){type = dict.type();}// 通過數據字典類型和value獲取name gen.writeObject(value);gen.writeFieldName(gen.getOutputContext().getCurrentName()+"Name");//字典賦值(不同項目的字典值獲取會不一樣,個人根據實際情況實現)String label = DictBizCache.getValue(type, String.valueOf(value));gen.writeObject(label);}@Overridepublic JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty beanProperty) throws JsonMappingException {if (Objects.isNull(beanProperty)){return prov.findValueSerializer(beanProperty.getType(), beanProperty);}DictBizOne dict = beanProperty.getAnnotation(DictBizOne.class);if (Objects.nonNull(dict)){type = dict.type();return this;}return prov.findNullValueSerializer(null);}

3.實體類添加注解

import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;@Data
public class SpecificJobPositionsVO implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "id")private Long id;@ApiModelProperty(value = "name")private String name;@ApiModelProperty(value = "等級")@Dict(type = "USER_LEVEL") //type中添加字典的codeprivate String level;}

4.json返回值

      {"id": "1522492702905954306","name": "小莊","level": "1","levelName": "哦嗚"},

總結

以上就是注解實現自動添加字典值

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209079.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209079.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MongoTemplate 常用查詢

MongoTemplate是Spring Data MongoDB提供的一個Java編程接口&#xff0c;用于操作MongoDB數據庫。它提供了一系列方法和功能&#xff0c;以便進行數據的插入、更新、刪除和查詢等操作。 使用MongoTemplate&#xff0c;你可以通過編寫Java代碼與MongoDB進行交互&#xff0c;而無…

二百一十四、Linux——Linux系統時間比電腦時間慢5分鐘

一、目的 服務器重啟后&#xff0c;發現Linux的系統時間比電腦時間慢5分鐘&#xff0c;于是看了些博客&#xff0c;終于找到了解決方法&#xff0c;記錄一下&#xff0c;以防止后面出現同樣的問題 二、問題 通過date查看&#xff0c;Linux系統時間比電腦時間慢5分鐘 &#…

IEEE RAS 機器人最優控制(Model-based Optimization for Robotics)學習資料

系列文章目錄 前言 電氣和電子工程師學會機器人模型優化技術委員會 一、學習資料 1.1 教程和暑期學校 2020 年 Memmo 歐盟項目暑期班2019年Memmo歐盟項目冬季學校Matthias Gerdts&#xff08;德國慕尼黑聯邦國防軍大學&#xff09;在拜羅伊特 OMPC 2013 上舉辦的最優控制教程…

詳解vue生命周期

vue2 生命周期 Vue.js是一個流行的JavaScript框架&#xff0c;它使用了一套生命周期鉤子函數來管理組件的創建、更新和銷毀過程。以下是Vue組件的生命周期鉤子函數&#xff1a; beforeCreate&#xff1a;在實例初始化之后&#xff0c;數據觀測 (data observer) 和 event/watch…

字節跳動ZNS SSD應用案例解析

一、ZNS SSD基本原理 ZNS SSD的原理是把namespace空間劃分多個zone空間&#xff0c;zone空間內部執行順序寫。這樣做的優勢&#xff1a; 降低SSD內部的寫放大&#xff0c;提升SSD的壽命 降低OP空間&#xff0c;host可以獲得更大的使用空間 降低SSD內部DRAM的容量&#xff0c;…

一款可無限擴展的軟件定時器開源框架項目代碼

摘自鏈接 時間片輪詢架構如何穩定高效實現&#xff0c;取代傳統的標志位判斷方式&#xff0c;更優雅更方便地管理程序的時間觸發操作。 可以在STM32單片機上運行。

基于SSM的社區管理系統

末尾獲取源碼 開發語言&#xff1a;Java Java開發工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 數據庫&#xff1a;MySQL5.7和Navicat管理工具結合 服務器&#xff1a;Tomcat8.5 開發軟件&#xff1a;IDEA / Eclipse 是否Maven項目&#xff1a;是 目錄…

LeetCode(52)最小棧【棧】【中等】

目錄 1.題目2.答案3.提交結果截圖 鏈接&#xff1a; 最小棧 1.題目 設計一個支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常數時間內檢索到最小元素的棧。 實現 MinStack 類: MinStack() 初始化堆棧對象。void push(int val) 將元素val推入堆棧。void…

區分工業設計軟件中CAD、CAE、CAM、PDM等概念

工業設計軟件是專門用于輔助工業設計師在產品設計和開發過程中進行各種任務的計算機程序。這些軟件提供了廣泛的工具和功能&#xff0c;幫助設計師創建、分析、修改和可視化產品的概念和詳細設計。 CAD 計算機輔助設計&#xff08;Computer-Aided Design&#xff0c;CAD&…

15、SQL注入——Sqlmap

文章目錄 一、Sqlmap簡介1.1 sqlmap可以對URL干嘛&#xff1f;1.2 Sqlmap支持的注入技術1.3 SQLmap檢測注入漏洞的流程1.4 Sqlmap的誤報檢測機制 二、sqlmap基本使用 一、Sqlmap簡介 sqlmap使用教程 1.1 sqlmap可以對URL干嘛&#xff1f; 判斷可注入的參數判斷可以使用哪一種…

汽車電子智能保險絲解決方案

一、背景知識 在過去的幾十年里&#xff0c;電子在汽車系統創新中發揮了關鍵作用。新型半導體器件具有新穎的功能&#xff0c;增強了車輛機械系統提供的功能。 雖然半導體解決方案和電子產品將繼續在汽車電子產品中發揮關鍵作用&#xff0c;但展望未來&#xff0c;汽車創新將…

css順時針旋轉90°再3D中繞Y軸旋轉180°

CSS 順時針旋轉 90 再 3D 中繞 Y 軸旋轉 180 的示例代碼如下&#xff1a; div {transform: rotate(90deg) perspective(500px) rotateY(180deg); }在這個示例中&#xff0c;元素被先進行了 2D 順時針旋轉 90&#xff0c;然后設置了 perspective 屬性來定義元素的視角距離&…

UE4 材質實現Glitch效果

材質實現Glitch效果 UE4 材質實現Glitch效果預覽1預覽2 UE4 材質實現Glitch效果 預覽1 添加材質函數&#xff1a; MF_RandomNoise 添加材質&#xff1a; 預覽2 添加材質函數MF_CustomPanner&#xff1a; 添加材質函數&#xff1a;MF_Glitch 材質添加&#xff1a; 下面用…

Docker 部署 2FAuth 服務

拉取最新版本的 2FAuth 鏡像&#xff1a; $ sudo docker pull 2fauth/2fauth:latest在本地預先創建好 2fauth 目錄, 用于映射 2FAuth 容器內的 /2fauth 目錄。 使用以下命令, 在 前臺 運行 2FAuth 容器: $ sudo docker run -it --rm --name 2fauth -p 10085:8000/tcp -v /ho…

3D材質編輯:制作被火燒的木頭

在線工具推薦&#xff1a; 3D數字孿生場景編輯器 - GLTF/GLB材質紋理編輯器 - 3D模型在線轉換 - Three.js AI自動紋理開發包 - YOLO 虛幻合成數據生成器 - 三維模型預覽圖生成器 - 3D模型語義搜索引擎 當談到游戲角色的3D模型風格時&#xff0c;有幾種不同的風格&#xf…

css實現頭部占一定高度,內容區占剩余高度可滾動

上下布局&#xff1a; <div class"container"><header class"header">頭部內容</header><div class"content">內容區域</div> </div>.container {display: flex;flex-direction: column;height: 100vh; /*…

SQL Server 2017數據庫window server服務器改名操作

在window服務器修改機器名重新加域后&#xff0c;需要執行下面的SQL語句修改數據庫里面記錄的機器名字&#xff0c;才能在修改后通過新名字連接數據庫。 if serverproperty(servername) <> servername begin declare server sysname set server ser…

53. Protocol buffer 的Go使用

文章目錄 一、介紹二、安裝三、protoc3語法1、 protoc3 與 protoc2區別2、proto3生成go代碼包Message內嵌Message字段單一標量字段單一message字段可重復字段slicemap字段枚舉 一、介紹 Protobuf是Google旗下的一款平臺無關&#xff0c;語言無關&#xff0c;可擴展的序列化結構…

AWS KeyPair密鑰格式轉換PPK<>PEM

概述說明 PEM&#xff08;Privacy Enhanced Mail&#xff09;和PPK&#xff08;Putty Private Key&#xff09;都是與加密和安全相關的文件格式&#xff0c;通常用于存儲私鑰信息。它們在不同的上下文中使用&#xff0c;并且與不同的軟件和協議相關聯。 PEM&#xff08;Priva…

【kubernetes】k3s集群搭建(正在更新……)

文章目錄 一、k3s簡介二、快速搭建1.控制平面2.鏡像加速 Pod容器集1.創建和管理pod Deployment(部署)與ReplicaSet(副本集)滾動更新 Service命名空間YAML語法管理對象常用命令縮寫YAML規范 聲明式配置對象標簽選擇器 容器運行時接口(CRI)與鏡像導入導出容器運行時接口(CRI) 金絲…