`
benx
  • 浏览: 276292 次
  • 性别: 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 源码分析

    在Spring框架中,AOP(面向切面编程)是一个核心特性,它允许我们在不修改代码的情况下,对程序的行为进行统一的管理和控制。`ProxyFactoryBean`是Spring AOP实现中的一个重要类,它用于创建代理对象,使我们能够...

    ApacheCXFBook源码

    这些实例通常会覆盖从基本的 HelloWorld 示例到更复杂的场景,如数据绑定、安全性和服务拦截器等。 1. **CXF的基本概念**: - **服务端点接口(SEI)**:这是定义Web服务操作的Java接口,是客户端和服务端交互的...

    Spring_0300_JDKProxy

    在Java编程领域,Spring框架是应用最广泛的IoC(Inversion of Control)和DI(Dependency Injection)容器之一。它提供了一种优雅的方式来管理对象的生命周期和依赖关系,并且还包含了强大的面向切面编程(AOP)支持...

    【课后笔记】Apache Dubbo服务注册及服务消费源码分析

    服务消费阶段,消费者会从注册中心获取服务提供者的URL信息,然后通过Dubbo的ProxyFactory生成一个与服务接口匹配的代理对象。ProxyFactory是一个自适应扩展点,它可以根据配置或环境自动选择合适的代理实现,如...

    mybatis分页源码

    private Object doPluginAll(ProxyFactory proxyFactory) { ... executorMethods.forEach(method -> { if (method.getName().equals("query")) { pluginMethods.add(method); } }); return proxyFactory....

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

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

    ICE使用,包含SERVER和CLIENT端

    String greeting = hello.sayHello("World"); System.out.println(greeting); // 输出: Hello, World ``` ### 总结 通过上述步骤,你已经在Java环境中成功地使用ICE 3.4.1构建了一个简单的SERVER和CLIENT应用,并将...

    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...

    用spirng和hessian构建分布式应用(远程接口)的方法

    String result = myService.doSomething("Hello, World!"); System.out.println(result); } } ``` 在上面的代码中,我们使用 HessianProxyFactory 创建了一个代理对象,然后调用了远程服务的 doSomething 方法,...

    QwebView在代理服务器的情况下上网

    QNetworkProxyFactory *proxyFactory = new QNetworkProxyFactory(); QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, "your_proxy_host", your_proxy_port); proxy.setUser("your_username"); // 如果需要...

    AOP 和 Aspect 注解切入 测试 Demo

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

    spring aop

    在这个例子中,`BankController` 使用 `proxyFactory` 作为其服务层的代理,`proxyFactory` 负责在目标对象 `bankService` 的方法调用前后添加额外的行为。 #### 六、结论 Spring AOP 通过提供一种灵活的方式来...

    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 包装结果集为一个迭代器.

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

    5. Weaving(编织):将切面应用到目标对象的过程,Spring AOP在运行时完成这个过程,通过ProxyFactory或ProxyFactoryBean。 二、AOP种类 1. 静态织入:在编译时完成,如AspectJ。 2. 动态织入:运行时进行,Spring...

    spring-aop.rar_aop1270_spring_spring aop

    Spring AOP的核心类包括`org.springframework.aop.framework.ProxyFactoryBean`、`org.springframework.aop.framework.ProxyFactory`、`org.springframework.aop.aspectj.autoproxy.AspectJAutoProxyCreator`等。...

    proxool 连接池实例

    在Java应用程序中,数据库连接管理是性能优化的关键环节之一。Proxool是一个轻量级的、开源的JDBC连接池,它提供了高效且灵活的数据库连接管理方案。Proxool允许开发者通过配置文件来设定连接池的参数,以满足不同...

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

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

Global site tag (gtag.js) - Google Analytics