- 浏览: 922076 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (453)
- Windows phone 7 (0)
- Andriod (47)
- iPhone (1)
- Web (30)
- J2EE (34)
- stucts 2学习笔记 (34)
- 开发项目 (3)
- spring学习笔记 (24)
- EJB学习笔记 (6)
- Hibernate学习笔记 (15)
- JPA学习笔记 (8)
- Jsp (11)
- ajax (7)
- 异常收集模块 (1)
- jquery (2)
- phoneGap (2)
- jquery Mobile (0)
- java面试总结 (5)
- Object-C (0)
- javascript (6)
- Eclipse (5)
- 支付集成 (2)
- Weblogic (1)
- Dubbox (5)
- Redis (10)
- linux (21)
- Codis (2)
- React Native (0)
- Mysql (6)
- Docker (3)
- 自动化部署 (1)
- 项目Bug管理平台 (2)
- 负载均衡 (1)
- Mycat (2)
- Java基础知识 (16)
- 数据库 (7)
- Maven (17)
- Kafka (21)
- logs (2)
- 大并发 (2)
- 消息中间件 (2)
- 分布式锁 (3)
- 算法 (4)
- 数字证书原理,公钥私钥 (0)
- 数字证书原理 (1)
- 公钥私钥 (1)
- zookeeper (4)
- Hbase (9)
- Hadoop (2)
- storm (2)
- 通信协议 (1)
- Hive (3)
- git (1)
- JVM (2)
- 大数据相关算法 (1)
- idea (5)
- 将博客搬至CSDN (1)
- 设计模式 (2)
- 表达式 (1)
- 代码审查工具 (0)
- 开源项目 (1)
- PyCharm (0)
- python (6)
- Kubernetes (1)
- swagger (1)
- Maven中mirrors和repository的关系 (0)
- RabbitMQ (3)
- redisson (1)
- k8s (2)
- Mac (1)
最新评论
-
misisipi101:
假设库已经分为32个,那么要扩展到64个,怎样做呢
订单分库分表实践总结以及关键步骤 -
mfkxk298:
简单明了的例子,解决了问题,谢谢啦!
关于ListView中notifyDataSetChanged()刷新数据不更新原因 -
whbwang:
" target="_blank" ...
java web开发 高并发处理 -
suguoqian:
...
java web开发 高并发处理 -
xiangnanyujing:
Dubbox+Redis3.0+Spring+Hibernate+zookeeper实现消息推送核心搭建
知识点
【
public class JDKProxy implements InvocationHandler {
private Object targetObject;//代理的目标对象
public Object createProxyInstance(Object targetObject){
this.targetObject = targetObject;
/*
* 第一个参数设置代码使用的类装载器,一般采用跟目标类相同的类装载器
* 第二个参数设置代理类实现的接口
* 第三个参数设置回调对象,当代理对象的方法被调用时,会委派给该参数指定对象的invoke方法
*/
return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
this.targetObject.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
return method.invoke(this.targetObject, args);//把方法调用委派给目标对象
}
}
当目标类实现了接口,我们可以使用jdk的Proxy来生成代理对象。
】
照样实现步骤:
第一步:编写代理类
public class JDKProxy implements InvocationHandler {
private Object targetObject;//代理的目标对象
public Object createProxyInstance(Object targetObject){
this.targetObject = targetObject;
/*
* 第一个参数设置代码使用的类装载器,一般采用跟目标类相同的类装载器
* 第二个参数设置代理类实现的接口
* 第三个参数设置回调对象,当代理对象的方法被调用时,会委派给该参数指定对象的invoke方法
*/
return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
this.targetObject.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
return method.invoke(this.targetObject, args);//把方法调用委派给目标对象
}
}
当目标类实现了接口,我们可以使用jdk的Proxy来生成代理对象。
第二步:编写PersonServer。java和接口IPersonServer.java
public interface IPersonServer {
public abstract void save();
}
public class PersonServer implements IPersonServer {
private IPersonDao personDao;
private String name;
public PersonServer(){}
/*
* 通过构造器来注入依赖对象
*/
public PersonServer(IPersonDao personDao, String name) {
this.name = name;
this.personDao = personDao;
}
public PersonServer(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IPersonDao getPersonDao() {
return personDao;
}
// @Resource(name="mypersonDao")
// @Autowired
public void setPersonDao(IPersonDao personDao) {
this.personDao = personDao;
}
public void save() {
System.out.println("Test JDK Proxy");
}
}
第三步:编写单元测试
@Test
public void TestJDKProxy()
{
createJDKProxy proxy=new createJDKProxy();
//转换为实现接口
IPersonServer personServer=(IPersonServer)proxy.createProxyInstance(new PersonServer("liyong"));
personServer.save();
}
【
public class JDKProxy implements InvocationHandler {
private Object targetObject;//代理的目标对象
public Object createProxyInstance(Object targetObject){
this.targetObject = targetObject;
/*
* 第一个参数设置代码使用的类装载器,一般采用跟目标类相同的类装载器
* 第二个参数设置代理类实现的接口
* 第三个参数设置回调对象,当代理对象的方法被调用时,会委派给该参数指定对象的invoke方法
*/
return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
this.targetObject.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
return method.invoke(this.targetObject, args);//把方法调用委派给目标对象
}
}
当目标类实现了接口,我们可以使用jdk的Proxy来生成代理对象。
】
照样实现步骤:
第一步:编写代理类
public class JDKProxy implements InvocationHandler {
private Object targetObject;//代理的目标对象
public Object createProxyInstance(Object targetObject){
this.targetObject = targetObject;
/*
* 第一个参数设置代码使用的类装载器,一般采用跟目标类相同的类装载器
* 第二个参数设置代理类实现的接口
* 第三个参数设置回调对象,当代理对象的方法被调用时,会委派给该参数指定对象的invoke方法
*/
return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
this.targetObject.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
return method.invoke(this.targetObject, args);//把方法调用委派给目标对象
}
}
当目标类实现了接口,我们可以使用jdk的Proxy来生成代理对象。
第二步:编写PersonServer。java和接口IPersonServer.java
public interface IPersonServer {
public abstract void save();
}
public class PersonServer implements IPersonServer {
private IPersonDao personDao;
private String name;
public PersonServer(){}
/*
* 通过构造器来注入依赖对象
*/
public PersonServer(IPersonDao personDao, String name) {
this.name = name;
this.personDao = personDao;
}
public PersonServer(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IPersonDao getPersonDao() {
return personDao;
}
// @Resource(name="mypersonDao")
// @Autowired
public void setPersonDao(IPersonDao personDao) {
this.personDao = personDao;
}
public void save() {
System.out.println("Test JDK Proxy");
}
}
第三步:编写单元测试
@Test
public void TestJDKProxy()
{
createJDKProxy proxy=new createJDKProxy();
//转换为实现接口
IPersonServer personServer=(IPersonServer)proxy.createProxyInstance(new PersonServer("liyong"));
personServer.save();
}
发表评论
-
Spring 5 中文解析之核心篇-IoC容器
2020-08-27 11:23 398关于本书 本书 本书编写主要目的在于翻 ... -
Spring Boot Profile使用
2018-06-26 19:06 563Spring Boot使用@Profile注解可以实现不同 ... -
Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别
2016-06-22 09:36 672Spring事务配置的五种方式 前段时间对Sprin ... -
Spring中@Autowired注解、@Resource注解的区别
2016-06-13 22:25 744Spring不但支持自己定义的@Autowired注解, ... -
Spring实现AOP的4种方式
2016-06-13 21:41 952先了解AOP的相关术语:1.通知(Advice):通知定义了 ... -
SpringMvc HttpClient上传参数
2016-05-04 21:58 2993SpringMVC代码示例如下: @RequestM ... -
重庆APP开发 重庆Android 重庆Ios 爬虫科技 重庆爬虫科技
2014-10-06 12:03 9<!--[if gte mso 9]><x ... -
spring中的事务学习
2012-05-11 09:11 1140/* * spring默认情况下会对unchecked会进行事 ... -
Spring+JDBC组合开发及环境搭建
2012-05-11 09:11 1570知识点; 【 <1、使用Spring+JDBC集成步骤 ... -
基于基于XML配置方式声明切面
2012-05-11 09:11 1445知识点: 【 //普通的java 类 public clas ... -
基于注解方式声明切面(AOP)
2012-05-10 10:55 1603基础知识: 【 首先启动对@AspectJ注解的支持(蓝色部 ... -
使用Spring进行面向切面(AOP)编程
2012-05-10 10:55 1106基础知识: 【 要进行AOP编程,首先我们要在spring的配 ... -
AOP中的概念
2012-05-10 10:55 886基础知识 【 Aspect(切面):指横切性关注点的抽象即为切 ... -
使用CGLIB生成代理
2012-05-10 10:55 1352知识点 【 使用前提条件: 【 /* * 如果这 ... -
通过在classpath自动扫描方式把组件纳入spring容器中管理
2012-05-09 09:39 1365知识点 : 【 前面的例子我们都是使用XML的bean定义来 ... -
依赖注入--手工装配
2012-05-09 09:39 1169知识点: 【 手工装配依赖对象,在这种方式中又有两种编程方式 ... -
集合类型的装配
2012-05-09 09:39 1069知识点: 【 第一:设置集合属性 public class ... -
bean的生命周期
2012-05-05 22:41 0bean的生命周期: 如下配置: <bean id=& ... -
bean的生命周期
2012-05-09 09:39 1076bean的生命周期: 如下配置: <bean id=& ... -
注入依赖对象
2012-05-08 12:06 977知识点: 【 基本类型 ...
相关推荐
JDK动态代理,关于jdk动态代理的问题!详细的说明!JDK动态代理JDK动态代理
动态代理是使用jdk的反射机制,创建对象的能力, 创建的是代理类的对象。 而不用你创建类文件。不用写java文件。 动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理,必须有接口,目标类必须...
对jdk中的动态代理执行过程进行了详细跟踪,并反编译了动态代理调用自动生成的代理类,并对其进行了详细讲解。
JDK动态代理源码下载,动态产生代理,实现对【不同类】,【不同方法】的代理
jdk动态代理技术详解,可以学习一下,不错的
通过一个简单例子来理解JDK动态代理的思想,资源为拷贝的视频讲解的内容。
Jdk动态代理,基于接口的代理示例 InovactionHandler Proxy
java jdk 动态代理 演示demo
AOP之JDK动态代理和CGLib动态代理 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45195383
模拟JDK动态代理内部实现
NULL 博文链接:https://jummy.iteye.com/blog/255628
spring aop jdk 动态代理的底层实现解析模拟
JDK动态代理proxy的基本工作原理代码!!
* * * * JDK动态代理 JDK动态代理 JDK动态代理是通过java.lang.reflect.Proxy 类来实现的,我们可以调用Proxy类的newProxyInstance()方法来创建代理对象。对于使用业务接口的类,Spring默认会使用JDK动态代理来实现...
java代理机制 JDK动态代理和cglib代理 详解
java jdk 动态代理演示demo
java静态代理 jdk动态代理 cglib动态代理 代理原理
JAVA动态代理实现Demo(JDK动态代理和CGLIB动态代理)
基于java的jdk动态代理, 比较了静态代理与动态代理的区别,以及动态代理的底层实现,反编译class文件 jdk动态代理和cglib的区别
模拟JDK动态代理