1.引入aop依賴
org.springframework.boot
spring-boot-starter-aop
2.自定義註解,使用aspect 對傳入資料加密,出參解密
/**
* @author zhenglong
* @description: desc加解密字段
* @date 2020/11/26 9:32
*/@target()
@retention(retentionpolicy.runtime)
@order(ordered.highest_precedence)
public @inte***ce endefield
3.編寫aop,實現註解類新增到方法和對應的字段上,可以進行自動加解密
/**
* @author zhenglong
* @description: 安全字段加密解密切面
* @date 2020/11/26 0:12
*/@aspect
@component("endefieldaspect")
public class endefieldaop
@around("execution(* com.csair.cargo.delivery.exchange.controller.*.*(..)) && @annotation(endefield)")
public object around(proceedingjoinpoint joinpoint,endefield endefield) catch (exception e)
handleencrypt(requestobj);
responseobj = joinpoint.proceed();
handledecrypt(responseobj);
} catch (nosuchmethodexception e) catch (throwable throwable)
return responseobj;
}/**
* 處理加密
** @param requestobj
*/private void handleencrypt(object requestobj) throws exception
authfield(requestobj, 1);
}/**
* 處理解密
** @param responseobj
*/private object handledecrypt(object responseobj) throws exception
@suppresswarnings("rawtypes")
executeresult executeresult = (executeresult) responseobj;
object o = executeresult.getresult();
if (o instanceof pageresult) else if (o instanceof collection) else
return responseobj;
}private object forlist(list list, integer flag) throws exception
for (object r : list)
return list;
}/**
* 公共加解密方法
** @param o
* @throws exception
*/private void authfield(object o, integer flag) throws exception
if (flag == 1) else
field.set(o, plaintextvalue);}}
}}
4.附上desc根據公鑰和向量加解密工具類
/**
* @author zhenglong
* @description: desc加解密utils
* @date 2020/11/25 19:17
*/public class descutils
}return sb.tostring();
}/**
* 解密資料
* @param message
* @return
* @throws exception
*/public static string decrypt(string message) throws exception
/*** 加密資料
* @param message
* @return
* @throws exception
*/public static string encrypt(string message) throws exception
/*** hex字串轉byte
* @param inhex 待轉換的hex字串
* @return 轉換後的byte
*/public static byte hextobyte(string inhex)
}
Java Mail結合AOP實現庫存預警
思路 在每次售出商品時會對庫存資料進行修改,此時在已有的方法中會返回乙個帶有倉庫所有資料的列表 關於aop的配置,此前雖然學習過,但很多地方已經不熟悉,於是在此處重新學習一遍。本例中使用xml配置,最關鍵的地方是切入點和切入方式。首先需要定義切面類,此類中定義了切入方法,並在spring中配置如下 ...
面向AOP程式設計 二 cache結合
快取配置 ehcache.xml 實現部分 一 初始化 cache private static cachemanager manager static private static void init 二 測試 aop 和 cache結合 public static void main strin...
對AOP池 AOP容器 的研究
通過前面的研究我發現思路侷限了 一直追求實現某個功能的 aop.物件導向的基礎是不斷抽象 當我們要把日誌,許可權 事務,工作流等模組都做成 aop的時候 就要想到 aop池這麼乙個概念了 功能模組是與業務完全解耦的 業務和功能模組在 aop池的兩側分別開發 往這個 aop池或者 aop容器中扔進去乙...