Spring学习历程---使用配置文件实现AOP

37 篇文章 0 订阅
29 篇文章 2 订阅

MyInterceptor.java

package com.bean;
import org.aspectj.lang.ProceedingJoinPoint;  
/** 
 * 切面 
 * 
 */  
public class MyInterceptor {      
    public void doAccessCheck() {  
        System.out.println("前置通知");  
    }  
  
    public void doAfterReturning() {  
        System.out.println("后置通知");  
    }  
      
    public void doAfter() {  
        System.out.println("最终通知");  
    }  
      
    public void doAfterThrowing() {  
        System.out.println("例外通知");  
    }  
      
    public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {  
        System.out.println("进入方法");  
        Object result = pjp.proceed();  
        System.out.println("退出方法");  
        return result;  
    }  
      
}  


beans.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"   
       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="personService" class="com.bean.PersonServiceBean"></bean>  
        <bean id="aspetbean" class="com.bean.MyInterceptor"/>  
        <aop:config>  
            <aop:aspect id="asp" ref="aspetbean">   
                <aop:pointcut id="mycut" expression="execution(* com.bean..*.*(..))"/>  
                <aop:before pointcut-ref="mycut" method="doAccessCheck"/>  
                <aop:after-returning pointcut-ref="mycut" method="doAfterReturning"/>  
                <aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing"/>  
                <aop:after pointcut-ref="mycut" method="doAfter"/>  
                <aop:around pointcut-ref="mycut" method="doBasicProfiling"/>  
            </aop:aspect>  
        </aop:config>  
</beans>  


execution(java.lang.String cn.itcast.service..*.*(..))  这样表示只拦截返回值为String类型的方法。

execution(!void  cn.itcast.service..*.*(..))  这样表示只拦截返回值为不为void类型的方法。

execution(*  cn.itcast.service..*.*(java.lang.String , .. )) 这样表示只拦截第一个参数为String类型的方法。

PersonService.java

package com.bean;

public interface PersonService {  
    public void save(String name);  
    public void update(String name, Integer id);  
    public String getPersonName(Integer id);  
} 

PersonServiceBean.java

package com.bean;

public class PersonServiceBean implements PersonService {  
  
    public String getPersonName(Integer id) {  
        System.out.println("我是getPersonName()方法");  
        return "xxx";  
    }  
  
    public void save(String name) {  
        //throw new RuntimeException("我爱例外");  
        System.out.println("我是save()方法");  
    }  
  
    public void update(String name, Integer id) {  
        System.out.println("我是update()方法");  
    }  
  
}  

测试类:

	public static void main(String[]args)
	{
	
		ApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
		PersonService personService = (PersonService)cxt.getBean("personService");
		personService.getPersonName(2);
	}


这是一个例子。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值