日期:2014-05-17  浏览次数:21400 次

aspectj 引入通知 实例
你懂的

package com.meiyoudao.service;

public interface BuyPersonService {

	public void buySomebody();
}


package com.meiyoudao.service;

public interface BuyPersonBySexService {
	
	public void buyPersonBySex();

}


package com.meiyoudao.service.impl;

import com.meiyoudao.service.BuyPersonService;

public class BuyPersonServiceImpl implements BuyPersonService {

	public void buySomebody(){
		System.out.println("Get someone!");
	}

}


package com.meiyoudao.service.impl;

import com.meiyoudao.service.BuyPersonBySexService;

public class BuyPersonBySexServiceImpl implements BuyPersonBySexService {

	public void buyPersonBySex() {
		System.out.println("male!");
		
	}

}


package com.meiyoudao.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.DeclareParents;

import com.meiyoudao.service.BuyPersonBySexService;
import com.meiyoudao.service.impl.BuyPersonBySexServiceImpl;

@Aspect
public class JoinAop {
	
	//将该BuyPersonBySexServiceImpl.class 注入 * .
	@DeclareParents(value="*",defaultImpl=BuyPersonBySexServiceImpl.class)
	public BuyPersonBySexService buyPerson;

}

<?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:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

<aop:aspectj-autoproxy/>

<bean id="buyPerson" class="com.meiyoudao.service.impl.BuyPersonServiceImpl"/>

<bean class="com.meiyoudao.aop.JoinAop"/>

</beans>


package com.meiyoudao.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.meiyoudao.service.BuyPersonBySexService;
import com.meiyoudao.service.BuyPersonService;

public class BuyPersonTest {

	
	public static void main(String[] args) {
		ApplicationContext app = new ClassPathXmlApplicationContext("MyXml.xml");
		BuyPersonService buyPerson = (BuyPersonService)app.getBean("buyPerson");
		
		buyPerson.buySomebody();
		
		BuyPersonBySexService buyPersonSex = (BuyPersonBySexService)buyPerson;
		
		buyPersonSex.buyPersonBySex();
		
	}

}