package cn.itcast.service;
import org.aspectj.lang.ProceedingJoinPoint;
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()
{
System.out.println("切面-----");
}
@Before("anyMethod()")
public void doAccessCheck()
{
System.out.println("前置通知");
}
//@AfterReturning(pointcut="anyMethod()",returning="result")
public void doAfterReturning(String result)
{
System.out.println("后置通知"+result);
}
public void doAfter()
{
System.out.println("最终通知");
}
public void doAfterThrowing()
{
System.out.println("例外通知");
}
//@Around("anyMethod()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable
{
System.out.println("进入方法");
Object result=pjp.proceed();
System.out.println("退出方法");
return result;
}
}
/**
//@Aspect
public class MyInterceptor {
//@Pointcut("execution(* cn.itcast.service.impl.PersonServiceBean.*(..))")
//private void anyMethod()
//{
//System.out.println("切面-----");
//}
//@Before("anyMethod() && args(name)")
public void doAccessCheck(String name)
{
System.out.println("前置通知"+name);
}
//@AfterReturning(pointcut="anyMethod()",returning="result")
public void doAfterReturning(String result)
{
System.out.println("后置通知"+result);
}
public void doAfter()
{
System.out.println("最终通知");
}
public void doAfterThrowing()
{
System.out.println("例外通知");
}
//@Around("anyMethod()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable
{
System.out.println("进入方法");
Object result=pjp.proceed();
System.out.println("退出方法");
return result;
}
}
**/
-----------------------------
package cn.itcast.service;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public interface PersonService {
public void save(String name);
public void update(String name, Integer personid);
public String getPersonName(Integer personid);
}
-------------------------------------
package cn.itcast.service.impl;
import cn.itcast.service.PersonService;
public class PersonServiceBean implements PersonService {
public String getPersonName(Integer personid) {
System.out.println("------这是getPersonName方法");
return "xxx";
}
public void save(String name) {
//throw new RuntimeException("我爱例外");
System.out.println("------这是save方法");
}
public void update(String name, Integer personid) {
System.out.println("------这是update方法");
}
}
---------------------------------------
<?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"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-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"></bean>
</beans>
--------------------
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.itcast.service.PersonService;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext cxt = new ClassPathXmlApplicationContext("app.xml");
PersonService p = (PersonService)cxt.getBean("personService");
p.save("222");
//p.getPersonName(222);
}
}