Spring AOP(二)(Spring中基于AOP的@AspectJ)

来源:互联网 发布:软件编程 找工作多少钱 编辑:程序博客网 时间:2024/04/24 13:52

@AspectJ 作为通过 Java 5 注释注释的普通的 Java 类,它指的是声明 aspects 的一种风格。
声明一个Aspect->声明一个切入点(需在xml配置文件中添加<aop:aspectj-autoproxy/>)
代码示例:

1.poem.xml(注意添加Spring AOP依赖的jar包aspectjrt.jar aspectjweaver.jar)

<dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.10</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.8</version>

2.创建Student.java

public class Student {private int age;private String name;public Student() {}public int getAge() {    return age;}public void setAge(int age) {    this.age = age;}public String getName() {    return name;}public void setName(String name) {    this.name = name;}@Overridepublic String toString() {    return "Student{" + "age=" + age + ", name='" + name + '\'' + '}';}}

3.创建Logger.java

package com.ruanjianlin.demo;import org.aspectj.lang.annotation.*;/** * Created by ruanjianlin on 2017/10/19. */@Aspectpublic class Logger {@Pointcut("execution(* com.ruanjianlin..demo.*.*(..))")private void selectAll(){}@Before("selectAll()")public void beforeAdvice(){    System.out.println("beforeAdvice");}@After("selectAll()")public void afterRunning(){    System.out.println("afterRunning");}@AfterThrowing(value = "selectAll()",throwing = "ex")public void afterThrowing(IllegalArgumentException ex){    System.out.println("afterThrowing"+ex.toString());}@AfterReturning(value = "selectAll()",returning = "val")public void afterReturning(Object val){System.out.println("afterRturning"+val.toString());}}

4.application.xml配置

<bean id="logger" class="com.ruanjianlin.demo.Logger"></bean><bean id="student" class="com.ruanjianlin.demo.Student"><property name="name" value="ruanjinlin"/><property name="age" value="21"/></bean><aop:aspectj-autoproxy/>

5.测试类的使用

ApplicationContext context =    new ClassPathXmlApplicationContext("application.xml");Student student = (Student) context.getBean("student");student.getName();student.getAge();

6.运行结果

beforeAdviceafterRunningafterRturningruanjinlinbeforeAdviceafterRunningafterRturning21