初步学习Spring Aop使用之注解方式

前言:

这里就主要演示Spring中Aop使用注解是怎么使用,如果需要了解更多Aop相关概念,可查看相关资料的介绍

一、项目目录  【标记文件为主要文件】

二、各个文件的代码

AopServer.java  【编写切点的文件,就是一些需要被修饰的业务处理】

package aop;

import org.springframework.stereotype.Service;

@Service
public class AopServer {

    public void add() {
        System.out.println("旧版本添加业务处理");
    }
}

AspectClass.java  【切面文件,定义一些前置后置环绕接口】

package aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * @author Luck
 * Aop 插入示例
 */

@Component // 告知Spring容器这是有个Bean对象
@Aspect  // 声明这是一个切面
public class AspectClass {
 
 // 定义切点
 @Pointcut("execution(* aop.AopServer.*(..))")
 public void pointCut() {}
 
 
 @Before("pointCut()") // 可使用复用的切点
 public void start() {
  System.out.println("前面插入方法");
 }
 
 
 @After("execution(* aop.AopServer.*(..))") // 可使用自己定义的规则切点
 public void end() {
  System.out.println("后面插入方法");
 }
 
 @Around("pointCut()")
 public void around(ProceedingJoinPoint joinPoint) throws Throwable {
  System.out.println("环绕插入前。。。。。。。。。。");
  joinPoint.proceed();
  System.out.println("环绕插入后。。。。。。。。。。");
 }
}

AopApplication.java   【测试入口,也是Spring Boot的入口】

package aop;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Configuration
@Controller
@SpringBootApplication
@ComponentScan(basePackages="aop")
public class AopApplication {

    @Autowired
    public AopServer sopServer;

    @RequestMapping(value="/aopDemo")
    @ResponseBody
    public String aopDemo() {
        sopServer.add();
        return "success";
    }

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

}

通过url访问控制台打印结果如下:

三、当一个连接点被一个切面的多个注解混合配置时Aop执行顺序如下:

没有出现异常情况

出现异常情况:

四、当一个连接点被多个切面的多个注解混合配置时Aop执行顺序是不确认的。如果需要确认执行顺序,可通过在Aspect的类上面使用@Order(value)注解来确定多个Aspect的顺序,Order里面的value越小优先级越高

原文地址:https://www.cnblogs.com/cairiqiang/p/10085653.html

时间: 2024-10-13 18:33:14

初步学习Spring Aop使用之注解方式的相关文章

spring AOP 编程--AspectJ注解方式 (4)

1. AOP 简介 AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, 面向对象编程) 的补充. AOP 的主要编程对象是切面(aspect), 而切面模块化横切关注点. 在应用 AOP 编程时, 仍然需要定义公共功能, 但可以明确的定义这个功能在哪里, 以什么方式应用, 并且不必修改受影响的类. 这样一来横切关注点就被模块化到特殊的对象(切面)里. AOP 的好处:

spring AOP解析之注解方式详解

命名空间处理器是AopNamespaceHandler,我们可以看到这里注册了几个解析器,第一个我们知道是xml形式的解析,接下来我们看AspectJAutoProxyBeanDefinitionParser解析器

七 Spring的IOC的注解方式

Spring的IOC的注解方式入门 创建web项目,引入相应的jar包 除了IOC的6个包,还需要AOP的包 引入Spring配置文件 创建applicationContext.xml 引入约束:使用注解开发引入context约束 file:///D:/Hibernate/Spring/spring-framework-4.2.4.RELEASE/docs/spring-framework-reference/html/xsd-configuration.html 创建接口和实现类: 配置Spr

Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法

Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx":意思是返回到某个JSP页面上 如果想在此Action中跳转到另一个Action中怎样做呢? return "redirect://.do?" 例如: @RequestMapping(params = "action=delete") public String del

spring AOP (包含基于注解和配置文件两种方式)

spring AOP?面向切面编程,区别于面向对象编程OOP AspectJ: 是Java社区里面最完整最流行的AOP框架,下面就用aspectJ来上例子 一.基于注解方式 步骤如下: 引入jar包(spring的必要jar包 以及aspectj的jar包) 业务方法HelloworldService (类上加上注解@Component,放入到spring ioc容器中) 切面LogingAop (类上加上注解@Component使其加入到ioc容器中,还需要注解@Aspect,使其成为一个切面

Spring4学习笔记-AOP(基于注解的方式)

1.加入jar包 com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar commons-logging-1.1.3.jar spring-aop-4.1.0.RELEASE.jar spring-aspects-4.1.0.RELEASE.jar spring-beans-4.1.0.RELEASE.jar spring-context-4.1.0.RELE

【Spring】—AOP之AspectJ注解方式实现声明式事务管理

前言 这回来说下注解方式的声明式事务管理. 正文 Demo 1.引入相关的jar包这里写图片描述 2.引入AOP约束<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/con

Spring第二天:Spring的IOC的注解方式、Spring的AOP开发(XML)

注解方式 如下: 开启组件扫描--> 结果同上. 如果设置值: 新建service 注入dao 进行测试  注入Dao. 但要注意 autowired是按照类型注入的 不管dao的名字是啥 哪怕是userDao22222  只要它实现了userDao接口  那么就可以直接注入userDao. 要想按名称注入 就要用Qualifier一起使用 如上图 这时名字就必须一致(userDao22222) ,也可以直接使用Resource注解. 下面举例:整合开发: 还要关闭包扫描(因为类都交给xml管理

Spring AOP四种实现方式Demo详解与相关知识探究

一.前言 在网络上看到一篇博客Spring实现AOP的4种方式,博主写的很通俗易懂,但排版实在抓狂,对于我这么一个对排版.代码格式有强迫症的人来说,实在是不能忍受~~~~(>_<)~~~~. 我亲手实现了一遍,重新整理,加上了一些不易关注到的细节.漏掉的知识,以及自己对AOP的一些理解,写成这篇博客. 二.AOP相关概念 (1)AOP是什么?AOP与拦截器的区别? 太抽象的不说,如果你知道Struts2的拦截器,拦截器就是应用的AOP的思想,它用于拦截Action以进行一些预处理或结果处理.而