做一个合格的程序猿之浅析Spring AOP源码(十七) Spring AOP开发大作战

前面AOP几节我们已经浅析了Spring 是如何实现AOP的,和AOP的底层原理,那么今天我们先来看看我们开发环境中是怎么运用AOP的


好了,我们先定义一个简单的应用场景,在web开发中,mvc模式中,我们的有些核心service的某些方法是需要打logger的,现在我们例如AOP,将打logger的事情给AOP去做


先定义个service接口

package org.study.spring.aop.base.xml;

public interface BussinessService {
	
	void doSomething();

}

具体实现:

package org.study.spring.aop.base.xml;

public class BussinessServiceImpl implements BussinessService{

	public void doSomething() {
		System.out.println("BussinessServiceImpl do something");
	}

}

通知(advice):

package org.study.spring.aop.base.xml;

import org.aspectj.lang.JoinPoint;

public class LoggerAspect {
	
	public void doBefore(JoinPoint jp) {  
		
        System.out.println("log Begining method: " + jp.getTarget().getClass().getName() + "." + jp.getSignature().getName());  
    } 

}

spring的配置文件

<?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/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 
     <aop:config>  
       <!-- 用什么切 -->
        <aop:aspect id="TestAspect" ref="aspectBean">  
             <!-- 在那个地方切 -->
            <aop:pointcut id="busssinessPointcut" expression="execution(* org.study.spring.aop.base.xml.*.*(..))" />  
             <!-- 什么时候切 -->
            <aop:before pointcut-ref="busssinessPointcut" method="doBefore"/>  
        </aop:aspect>  
    </aop:config>  
        
     <bean id="aspectBean" class="org.study.spring.aop.base.xml.LoggerAspect" />  
    <bean id="bussinessServiceImpl" class="org.study.spring.aop.base.xml.BussinessServiceImpl"></bean>  
    

</beans>

测试代码

package org.study.spring.aop.base.xml;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations ="classpath*:spring-aop.xml")
public class TestXmlAop {
    
	@Resource
    private BussinessService bussinessService;
	
	@Test
	public void testAop() throws Exception{
	    bussinessService.doSomething();
		 
	}

}

测试结果:








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值