博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AOP helloworld by Annotation
阅读量:2342 次
发布时间:2019-05-10

本文共 1781 字,大约阅读时间需要 5 分钟。

这段是从Spring学习笔记中截取出来的,使用注解动态代理。

Service.java

package bean;public interface Service {	public void service();}
ServiceImpl.java

package bean;public class ServiceImpl implements Service {	//业务方法	public void service() {		// TODO Auto-generated method stub		System.out.println("i'm servicing");	}}
Interceptor.java

package interceptor;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.springframework.stereotype.Component;@Aspect  //切面表示@Component	//加了这个就不用在xml里手动写bean了 public class Interceptor {	@Before("execution(public void bean.ServiceImpl.service())") //在执行service之前执行下面的before()	public void before() {		System.out.println("服务即将开始");	}}

这里的@before也可以写成@Before("execution(public * bean..*.*(..))"),这样 返回任何类型的bean包下的任何类的任何方法在加入任何参数时都会先执行这个逻辑

applicationContext.xml

ServiceTest.java

package bean;import java.lang.reflect.Proxy;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;public class ServiceTest {	@Before	public void setUp() throws Exception {	}	@After	public void tearDown() throws Exception {	}	@Test	public void proxy() {		BeanFactory factory = new ClassPathXmlApplicationContext(		"applicationContext.xml");		Service s = (Service)factory.getBean("serviceImpl");		s.service();	}}
结果

除此之外 ,还有别的织入点语法:

正常运行完之后执行:

@AfterReturning("execution(public * bean..*.*(..))")		public void afterReturning() {		System.out.println("returning");	}

抛出异常之后执行:

@AfterThrowing(pointcut = "execution(public * bean..*.*(..))", throwing = "ex") //ex是抛出的异常的引用	public void afterThrowing(RuntimeException ex) {		System.out.println("find exception:" + ex.getMessage());	}

你可能感兴趣的文章
破解visio2013记录
查看>>
嵌入式数据库h2
查看>>
CommandLineRunner
查看>>
218. The Skyline Problem
查看>>
Surrounded Regions
查看>>
Candy
查看>>
判断程序执行用户和活动用户是否一致
查看>>
Com引起计数
查看>>
IHTMLDocument2 IE浏览器编程
查看>>
C/C++中指针和引用之相关问题研究
查看>>
一些AIX问题,自动logout
查看>>
AIX操作系统及HACMP群集系统安装步骤
查看>>
AIX故障定位
查看>>
Linux zombie进程
查看>>
并发编程实战学习笔记(十一)-原子变量与非阻塞同步机制
查看>>
分布式系统的事务处理
查看>>
Java内存模型 之三个特性:
查看>>
Java内存 happens-before原则
查看>>
谈mvc
查看>>
未婚男子必读的31条感悟
查看>>