Spring之AOP介绍 及 使用AOP实现登录日志

本文介绍了Spring的AOP编程思想,详细阐述了AOP的核心角色,包括关注点、切入点和切面。通过创建注解、定义切面类以及使用后置和异常通知,展示了如何在登录方法中实现登录日志的记录。AOP的主要优点是降低代码耦合度,提高组件的可重用性。
摘要由CSDN通过智能技术生成

什么是AOP?

AOP: Aspect Oriented Programming 面向切面编程。是一种编程思想。通过切面织入的方式,对目标业务做功能上的增强。
主要目的是将独立的业务或通用的业务行为(比如事物、日志、异常处理等),与核心业务区分开,从代码中抽离出来,以另一种方式,动态织入到目标业务方法的前后。
优点:降低代码的耦合度,提高可重用性。

实现AOP思想的核心角色

  1. 关注点: 要对哪些业务方法进行增强,要进行怎样的增强。
  2. 切入点(PointCut):要在代码执行到哪里进行织入。通常是表达式指定或指定注解
  3. 切面(Aspect),通常是一个类,定义了切入点和通知。

Spring的通知

Spring的通知就是指定将代码以何种方式织入到目标业务中去。Spring定义了五中通知类型:
前置通知,后置通知,环绕通知、最终通知、异常通知

类型 描述 注解
前置通知 在目标方法被调用之前执行 @Before
后置通知 在目标方法正常完成后执行 @AfterReturning
环绕通知 在目标方法完成前后都做执行 @Around
最终通知 目标方法完成之后执行,无论目标方法是否成功完成 @After
异常通知 在目标方法抛出异常时执行 @AfterThrowing

使用Spring AOP思想实现登录日志

首先在Controller中有一个登录方法,为了方便,我就不再写Service层了,直接把登录逻辑写到Controller中

    @RequestMapping("login")
    public ResponseData<User> login(@RequestParam(value="username")String username,
    									   @RequestParam(value="username")String password) {
   
    	// 调用service 根据用户名查询用户的方法
    	User user = userService.getOne(new QueryWrapper<User>()
                .eq("username", dto.getUsername()));
        if (!SomeUtils.isNoEmpty(user)) {
   
        	// 用户不存在,抛异常
            throw new WtaoException(AuthExceptionEnum.ACCOUNT_NOT_FOUND);
        }
        if (!user.getPassword().equals(dto.getPassword())) {
   
			// 密码错误,抛异常
            throw ne
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值