spring-自定义AOP面向切面注解--统一切面处理-登陆信息采集

2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新)

1. 先写一个登陆记录注解(//记录:XXX时间,XXX姓名,XX系统,登录成功)

@Target(ElementType.METHOD) //作用用方法上
@Retention(RetentionPolicy.RUNTIME)//在运行时可用
public @interface LoginRecords {String value();
}

2. 写一个切面对注解进行处理(业务逻辑处理,记录登陆的信息)

@Aspect
@Component
public class logLoginInfo {//针对LoginRecords注解@Pointcut("@annotation(com.example.jobtest.aspect.annotion.LoginRecords) && execution(* *(..))")public void loginRecordsPointcut() {}@Around("loginRecordsPointcut()")public void logLoginInfo(ProceedingJoinPoint joinPoint){try {//登陆人信息LoginInfo info = (LoginInfo) joinPoint.getArgs()[0];//先获取登陆结果信息,走完登录流程ResultVo resultVo = (ResultVo) joinPoint.proceed();String nowTime = nowTime("yyyy-MM-dd HH:mm:ss");//记录:XXX时间,XXX姓名,XX系统,登录成功MethodSignature signature = (MethodSignature) joinPoint.getSignature();Method method = signature.getMethod();LoginRecords annotation = method.getAnnotation(LoginRecords.class);String systemType = annotation.value();//业务处理,插入记录表中//{........}System.out.println(nowTime + ":" + info.getName()+"在" + systemType +"系统" + resultVo.getData().toString());} catch (Throwable e) {throw new RuntimeException(e);}}public String nowTime(String regex){LocalDateTime now = LocalDateTime.now();DateTimeFormatter formatter = DateTimeFormatter.ofPattern(regex);String nowTime = now.format(formatter);return nowTime;}}

3.写一个登录的控制类,这里有asystemlogin跟bsystemlogin 用来区分注解的参数

@RestController
public class Login {@PostMapping("/asystemlogin")@LoginRecords("asystemlogin")public ResultVo checkAsystemlogin(@RequestBody LoginInfo loginInfo){ResultVo resultVo;if (loginInfo.getName().equals("axiaoyi") && loginInfo.getPwd().equals("aini")){resultVo = ResultVo.builder().code("200").data("登陆成功").build();}else {resultVo = ResultVo.builder().code("500").data("登陆失败").build();}return resultVo;}@PostMapping("/bsystemlogin")@LoginRecords("bsystemlogin")public ResultVo checkBsystemlogin(@RequestBody LoginInfo loginInfo){ResultVo resultVo;if (loginInfo.getName().equals("bxiaoyi") && loginInfo.getPwd().equals("aini")){resultVo = ResultVo.builder().code("200").data("登陆成功").build();}else {resultVo = ResultVo.builder().code("500").data("登陆失败").build();}return resultVo;}
}

4. 查看返回结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63211.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch源码搜索与分析

PyTorch的的代码主要由C10、ATen、torch三大部分组成的。其中: C10 C10,来自于Caffe Tensor Library的缩写。这里存放的都是最基础的Tensor库的代码,可以运行在服务端和移动端。PyTorch目前正在将代码从ATen/core目录下迁移到C10中。C10的代…

4.1 Windows终端安全

数据参考:CISP官方 目录 安全安装保护账户安全本地安全策略安全中心系统服务安全其他安全设置软件安全获取 一、安全安装(以安装windows系统为例) 选择合适的版本 商业版本:家庭版、专业版、专业工作站版、企业版特殊版本&…

云原生k8s---资源限制、探针

目录 一:资源限制 1、资源限制原因 2、Pod 和 容器 的资源请求和限制 3、CPU 资源单位 4、内存 资源单位 5、事例 (1)事例一 (2)事例二 二:重启策略 1、重启策略模式 2、事例 三:探针…

Groovy语法

工程目录 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 代码:LearnGroovy 参考文献 配置Groovy开发环境(Windows)IntelliJ IDEA创建第一个Groovy工程基于IntelliJ IDEA创建第一个Groovy工程

负载均衡–HAProxy安装及搭建tidb数据库负载服务

作为一名开发人员,随着经验的增加和技术的沉淀,需要提高自己架构方面的知识,同时对于一个企业来说,搭建一套高可用、高性能的技术架构,对于公司的业务开展和提高服务的性能也是大有裨益的。本文重点从软件安装和搭建ti…

C#多线程开发详解

C#多线程开发详解 持续更新中。。。。。一、为什么要使用多线程开发1.提高性能2.响应性3.资源利用4.任务分解5.并行计算6.实时处理 二、多线程开发缺点1.竞态条件2.死锁和饥饿3.调试复杂性4.上下文切换开销5.线程安全性 三、多线程开发涉及的相关概念常用概念(1)lock(2)查看当前…

学习Linux,要把握哪些重点?

不知道有没有想学习Linux,但又把握不住学习重点,找不到合适的学习方法的小伙伴,反正我刚开始学习Linux时就像无头苍蝇似的“乱撞”,没有把握住学习重点,不知道怎么去学,差点要放弃了,还好在慢慢…

《最强大模型平台上线,被很多行业“盯”上了》

千帆大模型 1、国内最多的模型2、国内最全的Prompt模板3、总结 千帆大模型平台是面向企业开发者的一站式大模型开发及服务运行平台,也是百度智能云推出的全球首个一站式企业级大模型平台。在提供全套文心大模型服务的基础上,还支持第三方开源大模型、各种…

【密码学】密码棒密码

密码棒密码 大约在公元前700年,古希腊军队使用一种叫做scytale的圆木棍来进行保密通信。其使用方法是这样的:把长带子状羊皮纸缠绕在圆木棍上,然后在上面写字;解下羊皮纸后,上面只有杂乱无章的字符,只有再次以同样的方式缠绕到同样粗细的棍子上,才能看出所写的内容。快速且不容…

【C++】开源:tinyxml2解析库配置使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍tinyxml2解析库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…

winform 使用CommonOpenFileDialog选择文件夹或文件

选择文件夹 /// <summary> /// 选择文件夹 /// </summary> public void SelectFolder() {CommonOpenFileDialog dialog new CommonOpenFileDialog("请选择一个文件夹");dialog.IsFolderPicker true; //选择文件还是文件夹&#xff08;true:选择文件夹…

[PyTorch][chapter 47][LSTM -2]

目录: 双向LSTM torch.nn.embedding()实现词嵌入层 nn.LSTM nn.LSTMCell LSTM 情感分类例子 一 双向LSTM 1 原理 正向输出的结果是 反向输出的结果是 nn.LSTM模块他在最后会将正向和反向的结果进行拼接concat.得到 # -*- coding: utf-8 -*- """ Crea…