欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

spring aop系列之二:java署理

更新时间: 2014-05-14 14:39:45 责任编辑: Author_N3

 

Spring AOP系列之二:Java代理
通过Java代理的方式:

汽车的代理,需要实现java.lang.reflect.InvocationHandler接口
public class CarJavaProxy implements InvocationHandler {
	private Object car;

	public void setCar(Object car) {
		this.car = car;
	}

	public Object createProxy() {
		Object proxy = Proxy.newProxyInstance(car.getClass().getClassLoader(), car.getClass().getInterfaces(), this);
		return proxy;
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		Object result = method.invoke(car, args);
		if ("info".equalsIgnoreCase(method.getName())) {
			System.out.println("Give 200 maintenance coupon via Java proxy");
		}
		return result;
	}
}


Spring配置文件beans-java-proxy.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"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
  default-autowire="byName">

  <bean id="car" class="com.john.spring.aop.Car">
  	<property name="name" value="Superb" />
	<property name="price" value="220000" />
  </bean>

  <bean id="carJavaProxy" class="com.john.spring.aop.CarJavaProxy">
  	<property name="car" ref="car" />
  </bean>
</beans>


测试:
public static void main(String[] args) {
	ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "beans-java-proxy.xml" });
	CarJavaProxy carProxy = (CarJavaProxy) ctx.getBean("carJavaProxy");
	Vehicle vehicle = (Vehicle) carProxy.createProxy();
	vehicle.info();
}


输出:
Car name: Superb, price: 220000
Give 200 maintenance coupon via Java proxy
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-14 14:39:45
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/262230/
本文WWW.DOC100.NET DOC100.NET版权所有。