1、开始 在Springboot框架中引入AOP

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2、创建注解  因需要在方法层面上进行控制 所以使用注解

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
/*** 定义一个消息通知的注解类
* @version:
* @Description:
* @author: hyd
* @date: 2019年2月20日 下午12:00:54*/
@Documented
@Retention(RUNTIME)
@Target(METHOD)
public @interface NotificationMessage {}

注:在注解内部 可以添加自己需要的参数 ,具体怎么添加和设置默认值 请自行进行百度 

3、创建切面类


/*** 此类为一个切面类,主要作用就是对接口的请求进行拦截* 拦截的方式,只需要在指定接口方法上面加上@NotificationMessage注解即可**/
@Aspect
@Component
public class NotificationAop{//使用org.slf4j.Logger,这是spring实现日志的方法private final static Logger logger = LoggerFactory.getLogger(NotificationAop.class);/*** 表示在执行被@NotificationMessage注解修饰的方法之前 会执行doBefore()方法** @param joinPoint 连接点,就是被拦截点*/@Before(value = "@annotation(com.example.demo.annotation.MonitorRequest)")public void doBefore(JoinPoint joinPoint) {//获取到请求的属性ServletRequestAttributes attributes =(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();//获取到请求对象HttpServletRequest request = attributes.getRequest();//URL:根据请求对象拿到访问的地址logger.info("url=" + request.getRequestURL());//获取请求的方法,是Get还是Post请求logger.info("method=" + request.getMethod());//ip:获取到访问logger.info("ip=" + request.getRemoteAddr());//获取被拦截的类名和方法名logger.info("class=" + joinPoint.getSignature().getDeclaringTypeName() +"and method name=" + joinPoint.getSignature().getName());//参数logger.info("参数=" + joinPoint.getArgs().toString());//获取切面方法的参数 joinPoint.getArgs();//...添加自己的业务逻辑代码}/*@After 等来控制 是在方法执行前执行还是在方法执行后执行**/}

4、如何使用

在对应的方法上加上这个注解即可

结束


5、创建枚举类记录

  • 创建被final修饰的属性
  • 提供全属性的构造方法
  • 提供属性的get 方法
package com.zwxq.Enum;/*** 消息通知类型 枚举类* * @version:* @Description:* @author: hyd* @date: 2019年2月20日 下午3:14:08*/
public enum NotificationTypeEnum {CONFESSIONTYPE("confession",1),ROASTTYPE("roast",2);private final String notificationName;private final int type;private NotificationTypeEnum(String notificationName, int type) {this.notificationName = notificationName;this.type = type;}public String getNotificationName() {return notificationName;}public int getType() {return type;}
}

SpringBoot 框架中 使用Spring Aop 、创建注解、创建枚举类 使用过程记录相关推荐

  1. SSM框架中使用Spring的@Transactional注解进行事务管理

    一 介绍 在企业级应用中,保护数据的完整性是非常重要的一件事.因此不管应用的性能是多么的高.界面是多么的好看,如果在转账的过程中出现了意外导致用户的账号金额发生错误,那么这样的应用程序也是不可接受的 ...

  2. 使用Spring AOP自定义注解方式实现用户操作日志记录

    1,开发环境 操作系统:Windows 7 JDK:1.8.0_161 Eclipse:Mars.2 Release (4.5.2) 2,自定义注解类UserLog @Target({ElementT ...

  3. spring aop组件_安全性中的Spring AOP –通过方面控制UI组件的创建

    spring aop组件 以下文章将显示在我参与的一个项目中,我们如何使用Spring的AOP来介绍一些与安全性相关的功能. 这样的概念是,为了使用户能够看到某些UI组件,他需要具有一定级别的安全特权 ...

  4. 安全性中的Spring AOP –通过方面控制UI组件的创建

    以下文章将显示在我参与的一个项目中,我们如何使用Spring的AOP来介绍一些与安全性相关的功能. 这样的概念是为了使用户能够看到一些UI组件,他需要具有一定级别的安全特权. 如果不满足该要求,则不会 ...

  5. J2EE中使用Spring AOP框架和EJB组件

    快速发展的开发人员社区.对各种后端技术(包括JMS.JTA.JDO.Hibernate.iBATIS等等)的支持,以及(更为重要的)非侵入性的轻量级IoC容器和内置的AOP运行时,这些因素使得Spri ...

  6. J2EE中使用Spring AOP框架和EJB组件(1)

    J2EE中使用Spring AOP框架和EJB组件(1) [@more@]本文介绍了一种把J2EE应用程序中的EJB转换为Spring托管组件的方法,以及转换之后可以采用的强大技术.它还给出了几个实际 ...

  7. J2EE中使用Spring AOP框架和EJB组件(6)

    J2EE中使用Spring AOP框架和EJB组件(6) [@more@] 组合和链接通知 我们已经使用了一个简单的拦截器通知来实现附加的逻辑,并且将其当作一个独立的组件进行了测试.当应该在不进行修改 ...

  8. Spring Aop 常见注解和执行顺序

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:juejin.cn/post/7062506923194581029 Spring 一开始最强大的就是 IOC / AOP 两 ...

  9. spring AOP自定义注解方式实现日志管理

    转:spring AOP自定义注解方式实现日志管理 今天继续实现AOP,到这里我个人认为是最灵活,可扩展的方式了,就拿日志管理来说,用Spring AOP 自定义注解形式实现日志管理.废话不多说,直接 ...

最新文章

  1. 使用现代C++如何避免bugs(下)
  2. docker容器 与 系统时间同步
  3. linux 等待子线程退出,等待一组子线程退出的问题__线程_pthread_join_终止_pthread_detach_释放__169IT.COM...
  4. boost::process::std_in相关的测试程序
  5. Python实用小技能,一个比一个高级!
  6. [ASP.NET AJAX]类似.NET框架的JavaScript扩展
  7. vbs读取服务器上的txt文件,VBS读写txt文件常用方法
  8. js从数组中删除指定值(不是指定位置)的元素
  9. 关于举办2017年暑期全国高校教师 “Python编程及应用”培训班通知
  10. SAP License:关于工作我的一些体会
  11. matlab数据归一化代码_深度学习amp;Matlab-LeNet实现图像分类
  12. 使用Mongo Shell和Java驱动程序的MongoDB Map Reduce示例
  13. QQ聊天记录恢复深度研究
  14. matlab对控制系统进行时域和频域联合分析
  15. 使用scrcpy投屏——手机投屏到电脑
  16. C++面向对象总结——数据抽象与数据封装
  17. emmx用xmind打开_XMind 里流程图的正确打开方式
  18. matlab人脸识别样本库建立,facenet 人脸识别(二)——创建人脸库搭建人脸识别系统...
  19. github 思维导图开元软件_哪款思维导图软件比较好用?
  20. 轻松学Pytorch – 人脸五点landmark提取网络训练与使用

热门文章

  1. LTE中基本通信过程的理解——上行调度
  2. C++ 函数参数 值传递与引用传递
  3. 卷积神经网络学习笔记与心得(4)池化
  4. DFS template and summary
  5. 第一篇随笔——新的开端
  6. 在CentOS 7中安装与配置Tomcat-8方法
  7. bash shell 合并文件
  8. SQL Server 数据库中的 MD5 和 SHA1加密算法
  9. 正则式高人谈解答正则式的心得
  10. OpenCV 【十四】改变图像的对比度和亮度高度关联章节:OpenCV 【十】——Gamma校正 ——图像灰度变化