目的:实现在任何想要切的地方添加一个注解就能实现面向切面编程

自定义注解类

@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface LongOu { }

@Target,@Retention都是java的元注解(总共有4个):

@Target:设置注解的使用范围,这里设置可以用在参数上和方法上。

@Retention:设置注解的生命周期,这里设置在运行时。

切面类:

@Aspect//声明这是一个切面
@Component//把这个类交给spring管理
public class LogOuAspect {
// 把切面的连接点放在了我们的注解上
@Pointcut("@annotation(com.example.demo.log.LongOu)")
public void ouAspect() {
}
// 在这里定义前置切面
@Before("ouAspect()")
public void beforeMethod(JoinPoint joinPoint) { // 这里执行保存日志的动作
System.out.println("方法前.......");
//得到被切方法的参数
System.out.println(joinPoint.getArgs()[0]);
}
}

conctronller类:

@RestController  //springboot注解,类下的所有方法返回的数据类型为jason
public class AspectController {
@RequestMapping("/getUser")
@LongOu//这是我们自定义的注解,加上这个注解后就能够切到这个方法了。
public User getUser(@PathVariable Integer id,HttpServletRequest request) {
System.out.println("方法中。。。。。");
User user=new User();
user.setName("小明");
user.setPassword("xxxx");
return user;
}
}

实体类:

public class User {
Integer id;
String name;
String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} }

运行结果:

方法前.......
方法中。。。。。

Java基于自定义注解的面向切面的实现的更多相关文章

  1. 010-Spring aop 001-核心说明-拦截指定类与方法、基于自定义注解的切面

    一.概述 面向切面编程(AOP)是针对面向对象编程(OOP)的补充,可以非侵入式的为多个不具有继承关系的对象引入相同的公共行为例如日志.安全.事务.性能监控等等.SpringAOP允许将公共行为从业务 ...

  2. Java实现自定义注解开发

    Java实现自定义注解开发 一直都对注解开发挺好奇的,最近终于有时间自己实践了一把,记录一下 万一后期会用到呢 哈哈哈 首先我们了解一下自定义注解的标准示例,注解类使用 @interface 关键字修 ...

  3. SpringBoot 通过自定义注解实现AOP切面编程实例

    一直心心念的想写一篇关于AOP切面实例的博文,拖更了许久之后,今天终于着手下笔将其完成. 基础概念 1.切面(Aspect) 首先要理解‘切’字,需要把对象想象成一个立方体,传统的面向对象变成思维,类 ...

  4. Spring注解 - AOP 面向切面编程

    基本概念: AOP:Aspect Oriented Programming,即面向切面编程 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式 前置通知(@Before):在目标 ...

  5. Java Annotation自定义注解详解

    在开发过程中总能用到注解,但是从来没有自己定义过注解.最近赋闲在家,研究整理了一番,力求知其然知其所以然. 本文会尝试描述什么是注解,以及通过一个Demo来说明如何在程序中自定义注解.Demo没有实际 ...

  6. 如何优雅地在 Spring Boot 中使用自定义注解,AOP 切面统一打印出入参日志 | 修订版

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  7. Spring Boot 自定义注解,AOP 切面统一打印出入参请求日志

    其实,小哈在之前就出过一篇关于如何使用 AOP 切面统一打印请求日志的文章,那为什么还要再出一篇呢?没东西写了? 哈哈,当然不是!原因是当时的实现方案还是存在缺陷的,原因如下: 不够灵活,由于是以所有 ...

  8. Spring Boot 中使用自定义注解,AOP 切面打印出入参日志及Dubbo链路追踪透传traceId

    一.使用背景 开发排查系统问题用得最多的手段就是查看系统日志,在分布式环境中一般使用 ELK 来统一收集日志,但是在并发大时使用日志定位问题还是比较麻烦,由于大量的其他用户/其他线程的日志也一起输出穿 ...

  9. Java利用自定义注解、反射实现简单BaseDao

    在常见的ORM框架中,大都提供了使用注解方式来实现entity与数据库的映射,这里简单地使用自定义注解与反射来生成可执行的sql语句. 这是整体的目录结构,本来是为复习注解建立的项目^.^ 好的,首先 ...

随机推荐

  1. java获取windows下面的文件对象

    import javax.swing.*;import javax.swing.filechooser.FileSystemView;import java.io.File; FileSystemVi ...

  2. SDL 2.0 如何在 windows 上使用?

    https://wiki.libsdl.org/APIByCategory http://adolfans.github.io/sdltutorialcn/sdl-2-dot-0-tutorial-i ...

  3. java并发 - 自底向上的原理分析

    [TOC] 事先声明,我只是java并发的新手,这篇文章也只是我阅读<java并发编程的艺术>一书(内容主要涉及前3章)的一些总结和感悟.希望大家能多多讨论,对于错误的地方还请指出. 0. ...

  4. CodeForces-748C

    这题就是确定一个点,然后去找能够实现最短距离的点且距离最远的点,因为题目要求点最少.在查找时,如果从最后的点开始枚举,找到的第一个满足距离最短的点一定是最远点,但是查找的复杂度是O(n),共有n次查找 ...

  5. nyoj886 取石子(八) 威佐夫博弈

    好累,坐了一天火车, 终于到学校了. 思路:仔细观察威佐夫博弈,发现P态的所有数字都是不重复的,例如(0,0).(1,2).(3,5).(4,7).(6, 10).(8,13).(9,15).(11, ...

  6. R+tmcn笔记︱tmcn包的基本内容以及李舰老师R语言大会展示内容摘录

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- tmcn包目前托管在在R-forge 上开发和 ...

  7. stm32开发之标准库的介绍

    1 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征.该函数库还包括每一个外设的驱动描 ...

  8. 初试 Windows XP Embedded 系统开发1

    目前 Windows PE(Preinstallation Environment)和 Windows XP Embedded 是可以脱离主机里的硬盘独立运行的 Windows 操作系统,Window ...

  9. 安装STS报错(一)

    安装STS报错 1.具体报错如下 2.报错原因 3.解决办法

  10. Linux显示系统日期

    Linux显示系统日期 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ date 2015年 01月 21日 星期三 20:37:39 CST