spring前置通知

123 阅读2分钟

Aspectj表示切面执行时间,用的通知(Advice)。 这个通知可以使用注解表示。 5个注解表示切面的5个执行时间, 这些注解叫做通知注解。

@Before : 前置通知 @AfterRetunring: 后置通知 @Around: 环绕通知 @AfterThrowing:异常通知 @After:最终通知 使用aspectj框架的注解,实现前置通知 前置通知@Before 实现步骤:

新建maven项目

修改app.xml 加入依赖: spring-context依赖, spring-aspects依赖(能使用aspectj框架的功能),junit

创建业务接口和实现类。

创建一个叫做切面类,是一个普通类 1)在类的上面加入@Aspect 2) 在类中定义方法, 方法表示切面的功能。在方法的上面加入Aspect框架中的通知注解,例如@Before(value=“切入点表达式”)

创建spring配置文件。 1)声明目标对象 2)声明切面类对象 3)声明自动代理生成器

创建测试类,测试目标方法执行时,增加切面的功能

具体实现 1.新建maven项目

2.添加依赖:

3.创建业务接口—service包

public interface SomeService { //doSome模拟某一个操作 void doSome(String name,Integer age); } 4.实现这个接口-impl 5.添加功能—创建一个类叫做切面类,是一个普通类 1)在类的上面加入@Aspect 2) 在类中定义方法, 方法表示切面的功能。在方法的上面加入Aspect框架中的通知注解,例如@Before(value="切入点表达式")

@Aspect: 切面类的注解,表示当前类是切面类而已。

位置:放在某个类的上面 作用:表示当前类是切面类。 切面类:包含切面功能的类

@Aspect public class MyAspact {

} 前置通知方法的定义 1)方法是public 2)方法是void 3)方法名称自定义 4)方法可以有参数,如果有是JoinPoint,也可以没有

public void myBefore(){ }

@Before语法格式: @Before(value = "切入点表达式") 属性:value 切入点表达式,表示切面的执行位置。在这个方法执行时,会同时执行切面的功能 位置:在方法的上面 【表达式语法【Spring】AOP 面向切面编程–准备工作】 特点: 1)执行时间:在目标方法之前先执行的。 2)不会影响目标方法的执行。 3)不会修改目标方法的执行结果。

6.创建spring配置文件。 1)声明目标对象 2)声明切面类对象 3)声明自动代理生成器

差一个代理---->框架帮忙编写代理类完成SomeServiceImpl中的doSome功能----->Spring配置文件

创建Spring配置文件: 1)声明目标对象 2)声明切面类对象 3)声明自动代理生成器 <auto + Enter