Java--简单的Spring AOP配置以及AOP事物管理,JDK/GCLib动态代理
程序员文章站
2022-03-25 08:04:48
...
一、看一下简单的通过XML的AOP配置
1.首先创建一个简单的Student类
public class Student { private Integer age; private String name; public void setAge(Integer age) { this.age = age; } public Integer getAge() { System.out.println("Age : " + age); return age; } public void setName(String name) { this.name = name; } public String getName() { System.out.println("Name : " + name); return name; } public void printThrowException() { System.out.println("Exception raised"); throw new IllegalArgumentException(); } }
2.创建一个简单的aspect切面class
public class Logging {/** * This is the method which I would like to execute * before a selected method execution. */public void beforeAdvice() { System.out.println("Going to setup student profile."); } /** * This is the method which I would like to execute * after a selected method execution. */public void afterAdvice() { System.out.println("Student profile has been setup."); } /** * This is the method which I would like to execute * when any method returns. */ public void afterReturningAdvice(Object retVal) { System.out.println("Returning:" + retVal.toString()); } /** * This is the method which I would like to execute * if there is an exception raised. */ public void AfterThrowingAdvice(IllegalArgumentException ex) { System.out.println("There has been an exception: " + ex.toString()); } }
3.SpringAOP.xml配置
【切面class】 【切点】 【方法执行之前触发切面class的beforeAdvice方法】 【方法执行之后触发切面class的afterAdvice方法】
分析一下这个execution(* com.seeyon.SpringBean.aop.Student.get*(..))切点表达式:
(1)第一个*代表方法的返回值是任意的
(2)get*代表以get开头的所有方法
(3)(..)代表方法的参数是任意个数
4.main方法
public class test { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("SpringAop.xml"); Student student = (Student) context.getBean("student"); student.getName(); // student.getAge(); // student.printThrowException(); } }
5.输出结果
Going to setup student profile. Name : yangyu Student profile has been setup.
二、Spring AOP注解的使用。
1.首先创建一个简单的Student类(同一.1中,请看上面
上一篇: PHP 源码学习之线程安全
下一篇: Java中用户界面布局