黑马程序员技术交流社区

标题: 【南京校区】SpringBoot使用AOP [打印本页]

作者: 大蓝鲸小蟀锅    时间: 2020-4-10 16:32
标题: 【南京校区】SpringBoot使用AOP
本帖最后由 大蓝鲸小蟀锅 于 2020-4-10 16:36 编辑

SpringBoot使用AOP




我们之前在spring的框架中使用aop大家都很熟悉了,但是目前我们使用springboot之后,没有了相关的配置文件,我们如何在springboot中去使用aop呢?下面我们来通过一个demo看一下具体的操作:



1. 创建一个新的maven工程,打包方式为war包



2. 打开pom.xml文件,导入相关的依赖

[XML] 纯文本查看 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.itcast</groupId>
    <artifactId>TestAop</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </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-aop</artifactId>
        </dependency>
    </dependencies>

</project>




3.  编写springboot 启动类

[Java] 纯文本查看 复制代码


package cn.itcast;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}




4. 编写一个controller,准备加入aop
[Java] 纯文本查看 复制代码

package cn.itcast.controller;

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

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public void hello(){
        System.out.printf("正常执行controller");
    }
}




5.编写切面类
[Java] 纯文本查看 复制代码


package cn.itcast.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**
* 切面类,
* Component 是把当前类交由spring管理
* Aspect 声明切面类   (包含 切点和通知)
*/
@Component
@Aspect
public class Aspect1 {

    /**
     * Before这是声明 前置通知
     * 括号内的是切点表达式: 意思是cn.itcast.controller包下所有类所有方法
     */
    @Before("execution(public * cn.itcast.controller..*(..)))")
    public void beforeFunc() {
        System.out.println("前置通知执行了!");
    }
}





注意:这里和spring 用aop 没有区别


6. 运行项目


7. 打开浏览器 访问: http://localhost:8080/hello

见到浏览器输出内容如下,则完成测试:


[Shell] 纯文本查看 复制代码

前置通知执行了!
正常执行controller









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2