XML
<?xml version= "1.0" encoding= "UTF-8" ?> <beans xmlns= "http://www.springframework.org/schema/beans" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:context= "http://www.springframework.org/schema/context" xsi:schemaLocation="http: //www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http: //www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http: //www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <aop:aspectj-autoproxy /> <bean id= "myInterceptor" class = "cn.itcast.service.MyInterceptor" /> <bean id= "personService" class = "cn.itcast.service.impl.PersonServiceBean" /> </beans> |
业务Bean,接口就不贴了
package cn.itcast.service.impl; import cn.itcast.service.PersonService; public class PersonServiceBean implements PersonService { public String getPersonName(Integer id) { System.out.println("我是getPersonName()方法"); return "XXX"; } public void save(String name) { System.out.println("我是save()方法"); } public void update(String name, Integer id) { System.out.println("我是update()方法"); } }
实现AOP的类
package cn.itcast.service; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Aspect public class MyInterceptor { @Pointcut("execution (* cn.itcast.service.impl.PersonServiceBean.*(..))") private void anyMethod() {} @Before("anyMethod()") public void doAccessCheck(String userName) { System.out.println("前置通知"); } }
测试方法
package junit.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.itcast.service.PersonService; public class SpringAOPTest { @Test public void interceptorTest(){ ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); PersonService personService = (PersonService)ctx.getBean("personService"); personService.save("xxx"); } }