如何在springboot中配置aop拦截器

2025-11-11 11:58:12

1、在spring里面还提供有一种aop拦截器配置,不过大部分的aop拦截器都是围绕着业务层进行拦截处理的。

1、建立一个普通的业务操作接口和它的子类:

package com.gwolf.service.impl;

import com.gwolf.service.IMemberService;

import com.gwolf.vo.Member;

import org.springframework.stereotype.Service;

@Service

public class MemberServiceImpl implements IMemberService{

    @Override

    public Member get(String mid) {

        Member vo = new Member();

        vo.setMid(mid);

        vo.setName("张三");

        return vo;

    }

}

如何在springboot中配置aop拦截器

2、现在业务层的操作完成之后随后去修改控制层,让控制层进行业务层的调用。

package com.gwolf.controller;

import com.gwolf.service.IMemberService;

import com.gwolf.util.controller.AbstractBaseController;

import com.gwolf.vo.Member;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.stereotype.Service;

import org.springframework.validation.BindingResult;

import org.springframework.validation.ObjectError;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import javax.validation.Valid;

import java.util.Iterator;

@Controller

public class MemberController extends AbstractBaseController{

    @Autowired

    private IMemberService memberService;

    

    @RequestMapping(value="/member_get", method = RequestMethod.GET)

    @ResponseBody

    public Object get(String mid) {

        return this.memberService.get(mid);

    }

}

如何在springboot中配置aop拦截器

3、访问地址:http://localhost:8080/member_get?mid=100

如何在springboot中配置aop拦截器

4、现在的业务层只是一个纯粹的调用而已,但是现在希望对调用的过程进行拦截处理,所以要想实现这样的处理,那么就需要引入新的开发依赖包,修改pom.xml配置文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>

        <artifactId>SpringBoot</artifactId>

        <groupId>com.gwolf</groupId>

        <version>1.0-SNAPSHOT</version>

    </parent>

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.gwolf</groupId>

    <artifactId>springboot-base</artifactId>

    <packaging>jar</packaging>

    <name>springboot-base</name>

    <url>http://maven.apache.org</url>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

    <dependencies>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>springloaded</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-devtools</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-thymeleaf</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-aop</artifactId>

        </dependency>

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <scope>test</scope>

        </dependency>

    </dependencies>

</project>

如何在springboot中配置aop拦截器

5、编写一个aop拦截的控制程序类。

package com.gwolf.config;

import org.aspectj.lang.ProceedingJoinPoint;

import org.aspectj.lang.annotation.Around;

import org.aspectj.lang.annotation.Aspect;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Component;

import java.util.Arrays;

@Aspect

@Component

public class ServiceAspect {

    private Logger log = LoggerFactory.getLogger(ServiceAspect.class);

    

    @Around("execution(* com.gwolf..service..*.*(..))")

    public Object aroundInvoke(ProceedingJoinPoint point) 

            throws Throwable {

        this.log.info("[***Service-Before***]执行参数:" 

                + Arrays.toString(point.getArgs()));

        

        Object object = point.proceed(point.getArgs());

        this.log.info("[***Service-After***]返回结果:"

                + object);

        return object;

    }

}

如何在springboot中配置aop拦截器

6、查看我们业务层的aop拦截输出打印。

如何在springboot中配置aop拦截器

7、对于web拦截可以使用拦截器,而对于业务层的拦截可以使用Aspect表达式结合AOP的拦截机制实现。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢