记录一下java实体类属性进行base64转码

需求

与对方进行文件交互(xml文件),但是对方需要对xml的属性进行base64的转换

注解

有两个注解 一个是加密 一个是解密
DecoderAs[ect解密 加密和解密差不多 就是换一下set值的方式就可以了

@Target(ElementType.METHOD)
public @interface DecoderMethod() {
}
@Component
@Slf4j
@Aspect
public class DecoderAspect {

    @Pointcut("@annotation(cy.example.demo.aop.DecoderMethod)")
    public void decoderAs() {
    }


    @Before("decoderAs()")
    public void doBefore(JoinPoint jp) throws IllegalAccessException, NoSuchFieldException {
        Object[] args = jp.getArgs();
        for (Object arg : args) {
            if (arg instanceof String) {
                Field value = arg.getClass().getDeclaredField("value");
                value.setAccessible(true);
                value.set(arg, "666".toCharArray());
                continue;
            }
            Field[] declaredFields = arg.getClass().getDeclaredFields();
            parseField(arg, declaredFields);
        }
    }

    private void parseField(Object obj, Field[] fields) throws IllegalAccessException {
        for (Field field : fields) {
            Class<?> type = field.getType();
            if (String.class.isAssignableFrom(type)) {
                field.setAccessible(true);
                Object o = field.get(obj);
                log.info("field: {}", o.toString());
                field.set(obj, ComUtils.encoderValue(field.get(obj).toString()));
                continue;
            }
            if (List.class.isAssignableFrom(type)) {
                field.setAccessible(true);
                List list = (List) field.get(obj);
                for (int i = 0; i < list.size(); i++) {
                    Object o = list.get(i);
                    Field[] declaredFields1 = o.getClass().getDeclaredFields();
                    parseField(o, declaredFields1);
                }
                continue;
            }
            field.setAccessible(true);
            Object o = field.get(obj);
            parseField(o, o.getClass().getDeclaredFields());
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值