SpringBoot整合WEB开发--(十)配置AOP

简介:

  SpringBoot框架中对AOP有很好的支持,简单AOP概念:

  JoinPoint(连接点):类里面可以被增强的方法即为连接点,例如,想修改哪个方法的功能,那么该方法就是一个连接点。

  Pointcut(切入点):对JoinPoint进行拦截的定义即为切入点,例如拦截所有insert开始的方法,这个定义即为切入点。

  Advice(通知):拦截到Joinpoint之后要做的事就是通知,分为前置,后置,异常,环绕,返回通知.

  Aspect(切面):Pointcut和Advice的结合。

  Target(目标对象):要增强的类称为Target.

SpringBoot中,首先引入aop依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

controller:

@RestController
public class UserController {
    @Autowired
    UserService userService;
    @GetMapping("/getUserById/{id}")
    public String getUserById(@PathVariable("id") Integer id) {
        return userService.getUserById(id);
    }
    @GetMapping("/deleteUserById")
    public void deleteUserById(Integer id) {
        userService.deleteUserById(id);
    }
}

Service:

@Service
public class UserService {
    public String getUserById(Integer id) {
        System.out.println("get..."+id);
        return "user";
    }
    public void deleteUserById(Integer id) {
        int i = 1 / 0;
        System.out.println("delete...");
    }
}

Aspect:

@Component
@Aspect
public class LogAspect {
  //切入点:返回类型 包+类+方法(参数)  @Pointcut("execution(* org.sang.aop.service.*.*(..))")
    public void pc1() {
    }
    @Before(value = "pc1()")
    public void before(JoinPoint jp) {
        String name = jp.getSignature().getName();
        System.out.println(name + "方法开始执行...");
    }
    @After(value = "pc1()")
    public void after(JoinPoint jp) {
        String name = jp.getSignature().getName();
        System.out.println(name + "方法执行结束...");
    }
    @AfterReturning(value = "pc1()", returning = "result")
    public void afterReturning(JoinPoint jp, Object result) {
        String name = jp.getSignature().getName();
        System.out.println(name + "方法返回值为:" + result);
    }
    @AfterThrowing(value = "pc1()",throwing = "e")
    public void afterThrowing(JoinPoint jp,Exception e) {
        String name = jp.getSignature().getName();
        System.out.println(name+"方法抛异常了,异常是:"+e.getMessage());
    }
    @Around("pc1()")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        return pjp.proceed();
    }
}

正常访问:

http://localhost:8080/getUserById/2

执行顺序:前置--service中的方法--后置--正常返回

异常:

http://localhost:8080/deleteUserById

执行顺序:前置--后置--异常返回

原文地址:https://www.cnblogs.com/crazy-lc/p/12331699.html

时间: 2024-07-30 12:55:44

SpringBoot整合WEB开发--(十)配置AOP的相关文章

Springboot整合web开发

一,整合 Servlet1,通过注解扫描完成 Servlet 组件的注册1.1 编写 servlet 1 /** 2 * 3 * springboot整合servlet方式一 4 * @author java 5 *<servlet> 6 * <servlet-name>FirstServletController</servlet-name> 7 * <servlet-class>com.zzp.controller.FirstServletControl

SpringBoot整合WEB开发--(八)启动任务系统

简介: 有一些特殊的任务需要在系统启动时执行,例如配置文件的加载,数据库初始化等操作,如果没有使用SpringBoot,这些问题可以在Listener中解决.SpringBoot提供了两种解决方案:CommandLineRunner和ApplicationRunner,这两个差别主要体现在参数上. 1.CommandLineRunner SpringBoot项目在启动时会遍历所有的CommandLineRunner的实现类并调用其中的run方法,如果整个系统中有多个CommandLineRunn

JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring? Spring是分层的JavaSE/EE full-stack(一站式)轻量级开源框架. 所谓分层: SUN提供的EE的三层结构:web层.业务层.数据访问层(也称持久层,集成层). Struts2是web层基于MVC设计模式框架. Hibernate是持久的一个ORM的框架. 所谓一站式:Spring框架有对三层的每层解决方案.

Spring整合web开发(6)

正常整合Servlet和Spring没有问题的但是每次执行Servlet的时候加载Spring配置,加载Spring环境. 解决办法:在Servlet的init方法中加载Spring配置文件? 当前这个Servlet可以使用,但是其他的Servlet的用不了了!!! 将加载的信息内容放到ServletContext中.ServletContext对象时全局的对象.服务器启动的时候创建的.在创建ServletContext的时候就加载Spring的环境. ServletContextListene

SpringBoot的Web开发

Web开发是开发中至关重要的一部分,web开发的核心内容主要包括servelet容器和SpringMVC. 1.SpringBoot的Web开发支持. SpringBoot提供了spring-boot-starter-web为web开发予以支持,spring-boot-starter-web提供了内嵌的Tomcat以及SpringMVC的依赖 而web相关的自动配置存储在spring-boot-autoconfigure.jar的org.srpingframework.boot.autoconf

springboot整合Quartz实现动态配置定时任务

前言 在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能. 一.新建一个springboot工程,并添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>

4.SpringBoot的web开发1

一.回顾 好的,同学们,那么接下来呢,我们开始学习SpringBoot与Web开发,从这一章往后,就属于我们实战部分的内容了: 其实SpringBoot的东西用起来非常简单,因为SpringBoot最大的特点就是自动装配. 使用SpringBoot的步骤: 创建一个SpringBoot应用,选择我们需要的模块,SpringBoot就会默认将我们的需要的模块自动配置好 手动在配置文件中配置部分配置项目就可以运行起来了 专注编写业务代码,不需要考虑以前那样一大堆的配置了. 要熟悉掌握开发,之前学习的

Java web 开发环境配置。

一.配置 win8 64位 环境java 开发环境 1.  下载JDK,地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html 选择下载 按照提示安装.安装过程过程中会有两个安装路径的设置,可默认也可自定义.这连个路径分别是指安装JDK和JRE的路径. 这选择路径是:D:\Program Files\Java\jdk1.7.0_60 和D:\Program Files\Java\jre7  注意这里的路径是为的是

java web开发环境配置系列(二)安装tomcat

在今天,读书有时是件"麻烦"事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<java web开发环境配置系列>来祭奠那逝去的--1.下载tomcat压缩包,进入官网http://tomcat.apache.org/,官网左侧有对应的下载列表,选择适合自己的版本,进入下载页面,这里下载的是64-bit Windows zip 2.下载后,解压到指定的文件目录中,如:D:\Program Files\tomcat 3.配置环境变量(右击"我的电脑"