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

spring技术手册上的一个java动态代理例子

    博客分类:
  • java
阅读更多
public interface IHello {
	public void hello(String name);
}

 

 

public class HelloImpl implements IHello{

	@Override
	public void hello(String name) {
		System.out.println("Hello:" + name);		
	}
}

 

 

 

package proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class LogHandler implements InvocationHandler {
	
	private Logger logger = Logger.getLogger(this.getClass().getName());
	
	private Object delegate;
	
	public Object bind(Object delegate) {
		this.delegate = delegate;
		return Proxy.newProxyInstance(delegate.getClass().getClassLoader(), delegate.getClass().getInterfaces(), this);
	}
	
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)	throws Throwable {
		Object result = null;
		log("method starts..." + method);
		result = method.invoke(delegate, args);
		logger.log(Level.INFO,"methods ends ..." + method);
		return result;
	}
	
	private void log(String message) {
		logger.log(Level.INFO,message);
	}
	
	public static void main(String[] args) {
		LogHandler logHandler = new LogHandler();
		IHello helloProxy = (IHello)logHandler.bind(new HelloImpl());
		helloProxy.hello("ssssssssssssss");
	}

}

 

分享到:
评论

相关推荐

    spring.net中文手册在线版

    Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为...

    Spring 2.0 开发参考手册

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程...

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

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 9.5.7. 插入事务操作 9.5.8. 结合AspectJ...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...

    Spring API

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @...

    Spring中文帮助文档

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @...

    Spring.net框架

    我们的第一个例子主要用于说明程序的基本构造,并且作为一个反面典型,引出为什么要解耦,以及如何下手。在这个例子中,我们将创建三个程序集,分别是MainApp.exe、HelloGenerator.dll以及SayHello.dll。它们之间的...

    java-core-learning-example:关于Java核心技术学习积累的例子,是初学者及核心技术巩固的最佳实践

    Java核心系列教程,关于Java核心技术学习积累的例子,是初学者及核心技术巩固的最佳实践。 包括基础语法,OOP,字符串,集合,IO,反射,线程,网络等。未完成模块:阿里Java手册,java8,注解,fork / join,加解密...

    Activiti6.0教程例子下载

    在编写这个Demo之前,至少要了解Activiti与Spring如何集成、XxxService各自的任务与作用,并完成上一章的Demo。 3.2. 流程文件xxx.bpmn20.xml 首先,我们就来编写这个流程的bpmn20.xml文件。 targetNamespace=...

    topfox快速开发平台例子 topfox-sample.zip

    编程规范参考《阿里巴巴Java开发手册》 借鉴mybaties plus部分思想 特性: - **无侵入**:只做增强不做改变,引入它不会对现有工程产生影响 - **损耗小**:启动即会自动注入基本 CURD,性能基本无损耗,直接面向...

    covidAPI

    带有Java EE的Architect企业应用程序(带有Spring Boot的微服务)-3月15日至19日 3月25日至29日,为Java EE平台开发应用程序(角度和单页应用程序) ...手册A-创建您的第一个Git Hub 手册B-配置您的环境 手册C-使

    covidAngular

    使用Jakarta EE(带有Spring Boot的微服务)的Architect企业应用程序-3月15日至19日开发Jakarta EE平台的应用程序... 从头到尾在仿真服务器上构建和部署JEE应用程序手册A-创建您的第一个Git Hub 手册B-配置您的环境

    Quartz Job Scheduling Framework 中文版

    Quartz 是什么,大概不需多加说明,简单讲就是一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细。也许大多数人听说 Quartz 是...

    asp.net知识库

    一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与XML转换的详细介绍 功能应用 读写搜索 基础教程 RSS Web2.0时代,RSS你会用了吗?(技术...

    topfox快速开发框架

    编程规范参考《阿里巴巴Java开发手册》 借鉴 mybaties plus 部分思想 特性: 无侵入:只做增强不做改变,引入它不会对现有工程产生影响 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 ...

Global site tag (gtag.js) - Google Analytics