Spring 注解方式实现后置通知(通知需要用到Target对象的参数)及格式化时间

前例:老师留了个作业,编写后置通知,实现日志记录的功能,日志打印即可,打印内容的模板为:” 【日志-新增手表】:当前系统时间(格式:yyyy-MM-dd HH:mm:ss) 新增XXX品牌的手表,数据记录的主键为:XXX”,其中XXX为WatchService中addWatch方法的参数的属性值。

即两点:这个后置通知需要用到Target对象里的方法的参数,就这样,我就卡住了,在后置通知的类里加参数,在Target类里加参数,我企图将Target类的参数(watch)传给后置通知,但是捣鼓了半天,才发现这个思路根本行不通,我也不知道为啥,后来问了同学才知道有这么一个思路:

后置通知的切点可以传参数,比如JoinPoint   joinPoint,这个参数的方法有如下:


getTarget():获取被代理对象
由于AOP代理原理是直接添加字节码文件,不创建新的对象。所以getThis()和getTarget()获取到的是同一个对象。同动态代理,不改变原有方法的前提下,可以拓展其他方法
getArgs():获取被代理方法的参数,返回Object[]

 

所以我们可以在切面方法(即后置通知里的方法)设一个参数,JoinPoint joinPoint,然后在方法体中用joinPoint.getArgs()[0]获取Target方法的参数,即 watch 



 


下面说说时间的格式化:

1.Date date=new Date()

System.out.println("当前时间为 date:" + date);
Long time = date.getTime();
System.out.println("当前时间为 time:" + time);
String pattern = "yyyy-MM-dd HH:m:ss";
SimpleDateFormat sf = new SimpleDateFormat(pattern);
System.out.println("当前时间为 format:" + sf.format(date));

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值