`
benx
  • 浏览: 271492 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ProxyFactory 之HelloWorld

    博客分类:
  • java
AOP 
阅读更多
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.framework.ProxyFactoryBean;

public class AopTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		//使用ProxyFactory
		ProxyFactory proxyFactory = new ProxyFactory();

		proxyFactory.addInterface(HelloWorld.class);
		proxyFactory.addInterface(HelloChina.class);

		proxyFactory.addAdvice(new LogAdvice());
		proxyFactory.addAdvice(new TimeAdvice());

		proxyFactory.setTarget(new HelloWorldImpl());

		HelloWorld helloWorld = (HelloWorld) proxyFactory
				.getProxy(AopTest.class.getClassLoader());
		helloWorld.sayHelloWorld();

		HelloChina helloChina = (HelloChina) proxyFactory
				.getProxy(AopTest.class.getClassLoader());
		helloChina.sayHelloChina();

		
		//使用ProxyFactoryBean
		ProxyFactoryBean pfb = new ProxyFactoryBean();
		pfb.addInterface(HelloWorld.class);
		pfb.addAdvice(new LogAdvice());
		pfb.setTarget(new HelloWorldImpl());
		HelloWorld helloWorldA = (HelloWorld) pfb.getObject();
		helloWorldA.sayHelloWorld();
	}
	
}

interface HelloWorld {
	void sayHelloWorld();
}

interface HelloChina {
	void sayHelloChina();
}

class HelloWorldImpl implements HelloWorld, HelloChina {

	public void sayHelloChina() {
		System.out.println("Hello China!");

	}

	public void sayHelloWorld() {
		System.out.println("Hello World!");

	}
}

/**
 * 日志拦截器
 * 
 * @author jin.xiong
 * 
 */
class LogAdvice implements MethodInterceptor {

	public Object invoke(MethodInvocation methodinvocation) throws Throwable {
		System.out.println("start " + methodinvocation.getMethod().getName());
		Object ob = methodinvocation.proceed();
		System.out.println("end " + methodinvocation.getMethod().getName());
		return ob;
	}
}

/**
 * 时间拦截器
 * 
 * @author jin.xiong
 * 
 */
class TimeAdvice implements MethodInterceptor {

	public Object invoke(MethodInvocation methodinvocation) throws Throwable {
		long start = System.currentTimeMillis();
		Object ob = methodinvocation.proceed();
		System.out.println("method proccess time "
				+ (System.currentTimeMillis() - start));
		return ob;
	}
}

分享到:
评论

相关推荐

    hessdroid-android

    HessianProxyFactory proxyFactory = new HessianProxyFactory(); // setting a user/password calls the web service with basic authentication proxyFactory.setUser("john"); proxyFactory.setPassword("doe"); ...

    spring-aop-ProxyFactoryBean 源码分析

    NULL 博文链接:https://wangxinchun.iteye.com/blog/2079585

    proxy_factory:基于redis的简单代理工厂

    自动从网上抓取免费代理,并对代理的可用性和匿名性进行检查,同时定时检查有效代理和无效代理,对于多次检查始终无效的代理,做放弃处理。同时检查函数可以自定义指定,用来针对不同的检查结果做出不同的React。...

    Java Web程序设计教程

    2.4项目实战——第一个javaee应用:helloworld 28 2.4.1开始创建第一个javaee应用 28 2.4.2熟悉helloworld框架结构 29 本章小结 32 课后练习 32 第3章jsp和servlet 33 3.1开发第一个jsp+servlet应用 33 3.1.1...

    AOP 和 Aspect 注解切入 测试 Demo

    1.ProxyFactory 基于 MethodBeforeAdvice、AfterReturningAdvice 利用 Spring Api 定义前、后置处理方法,并通过代理工厂类获取代理对象(代码或Xml配置实现) 2.ProxyFactoryBean 显式地设置 Advisors、Advice、...

    NHibernate.ByteCode.LinFu.dll

    NHibernate.ByteCode.LinFu 3.0.0.4000 NHibernate使用中框架动态代理方式 ...<property name="proxyfactory.factory_class"> NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu</property>

    LinFu.DynamicProxy.dll

    配合 LinFu.DynamicProxy 1.0.4.18998 NHibernate使用中框架动态代理方式 ...<property name="proxyfactory.factory_class"> NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu</property>

    commons-dbutils-1.6.jar包

    ProxyFactory 产生JDBC接口的代理实现. QueryLoader 属性文件加载器,主要用于加载属性文件中的 SQL 到内存中. QueryRunner 使用可插拔的策略执行SQL查询并处理结果集. ResultSetIterator 包装结果集为一个迭代器.

    基于Spring的HttpInvoker实现改写egova_invoker.zip

    ProxyFactory.proxy 方法,生成接口的代理对象,直接调用方法客户端和服务器端的接口和实体类要一致,实体类必须是可以序列化的比如:定义Bean: public class DemoBean implements java.io.Serializable{ ...

    aop的详细总结(包含例子)

    一、AOP 概念 二、AOP 种类 三、Spring AOP 代理原理 四、Spring AOP 通知类型 五、Spring AOP Pointcut 六、Spring AOP 中的Advisor其实就是Aspect 七、AOP ProxyFactory 八、自动代理

    AOP实现计算器代码.zip

    使用ProxyFactory或ProxyFactoryBean实现计算器功能,同时(1)日志功能:在程序执行期间追踪正在发生的活动(打印出调用的方法,以及参数的参数值);(2)验证功能:希望计算器只能处理正数的运算,当有负数参与...

    first Spring test

    1.实现特定功能的方面代码在aop中又称为“通知(Advice)”包含 前置通知 后置通知 环绕...2.spring 采用代理的方式将通知织入到原bean中,将原bean和通知都封装到--org.springframework.aop.framework.ProxyFactory.

    mobileSenderDemo

    Spring Data Jpa应用程序API API1.1。 기본API가인터페이스상속하여사용 반스않고스스스스스스함함함... AOP倒影기술을활용함 ProxyFactory,反射,MethodInterceptor,JdkDynamicAopProxy,CGLib Spring数据Jpa소스를

    tyloo:分布式交易框架——TCC

    基于Dubbo的ProxyFactory代理机制为服务接口生成代理对象。 基于Mysql,Redis乐观锁进行事务版本控制以及基于石英进行事务恢复。 支持各种事务日志序列化以及事务存储实现。 调用方式(版本):Dubbo,HTTP 业务场景...

    pluracle:哇! 这样的神谕

    PluracleOracle网络,以0形式启动自动Oracle,并非常容易地在区块链上公开链下... 可升级性每个oracle都是可升级的,它们都是使用zeppelinos ProxyFactory创建的。 可破坏性一旦Oracle死亡,它就会被破坏。 Oracle Re

    springboot-dubbo-sample:原创

    服务代理层(Proxy):服务接口透明代理,生成服务的客户端存根和服务器端骨架,以ServiceProxy为中心,扩展接口为ProxyFactory。服务注册层(Registry):封装服务地址的注册与发现,以服务URL为

    java8源码-Delta:一个轻量的MVC框架,上手简单,适用于小型JavaWeb项目快速开发

    ProxyFactory 等常用工具。 Rover 处理框架的核心逻辑,主要接管请求关系映射,实现了对物理资源的隐式访问,并提供了黑名单机制以便开发者屏蔽关键资源,提供了表单验证组件 XForm 以及 Convertor 简化了以往表单...

    Spring-Reference_zh_CN(Spring中文参考手册)

    使用BeanPostProcessor的Hello World示例 3.7.1.2. RequiredAnnotationBeanPostProcessor示例 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.2.1. PropertyPlaceholderConfigurer示例 3.7.2.2. ...

    Spring AOP 自动代理源码 DefaultAdvisorAutoProxyCreator

    Spring AOP源码02:ProxyFactory Spring AOP源码03:JdkDynamicAopProxy Spring AOP源码04:MethodInvocation 拦截器调用 Spring AOP源码05:DefaultAdvisorAutoProxyCreator Spring期末考压轴题:当Spring AOP遇上...

    Spring 实现远程访问详解——httpinvoker

    上文我们利用Spring rmi实现了Spring的远程访问(Spring 实现远程访问详解——rmi),本文主要讲解利用HttpInvoke实现远程访问。 ... 1. 远程访问流程 1) 服务端定义服务接口 2) 服务端实现服务接口 ...

Global site tag (gtag.js) - Google Analytics