ssm 实现日志 用aspectj_java之自定义注解实现日志管理

ssm版本:

1、首先自定义一个注解,该注解有两个属性,一个是模块名,一个是操作的内容。该注解是用来修饰Service层中的方法的。

2、创建一个切面类,该切面使用@Aspect和@Component注解修饰,该页面需要注入一个HttpSession对象。

注意:一个普通的java类是不能注入HttpSession对象的,因此需要在web.xml文件中配置

org.springframework.web.util.IntrospectorCleanupListener

org.springframework.web.context.request.RequestContextListener

3、在applicationContext.xml文件中配置aop:aspectj-autoproxy,扫描@Aspect注解。

springboot版本:

日志管理:

1、首先自定义一个注解,自定义的注解需要使用@Target(ElementType.METHOD),@Retention(RetentionPolicy.RUNTIME)修饰,然后给几个属性。

2、定义一个切面然后切面使用@Component,@Aspect修饰,然后定义扫描切入点表达式@After(“execution(* com.syzw.test..service..*(…))”),创建通知类型,通知类型里面可以使用 HttpServletRequest request=((ServletRequestAttributes)(RequestContextHolder.getRequestAttributes())).getRequest();去获取requet对象。

3、在该方法中就可以通过JoinPoint形参去获取实际操作对象的class类,然后就可以获取该到方法,然后可以获取到自定义的注解了就完成了日志的管理。

缺点:

如果需要进行比较信息的日志管理的话,需要在每一个操作dao接口的方法上添加自定义的注解,较为麻烦。

解决方式:

一般会在切面上判断url然后根据url去做相应的操作的,但是这种操作较不灵活。

JoinPoint是一个切入点,它封装了切入点和真实对象的一些信息。

JoinPoint常用的一些api:

getSignature():获取真实访问方法的全路径签名。

getArgs():获取传入目标方法的参数对象。

getTarget():获取被代理的对象。

getThis():获取代理对象。

Signature:

getName():获取操作的方法名。

getClass():获取方法所在的Class类。

注意:

其实每一个注解都对应了一个切面,注解只是其一个声明作用,并没有实际的意义。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值