spring的IOC依靠的就是代理的作用,
动态代理类(以下简称为代理类)是一个实现在创建类时在运行时指定的接口列表的类,该类具有下面描述的行为。 代理接口 是代理类实现的一个接口。 代理实例 是代理类的一个实例。 每个代理实例都有一个关联的调用处理程序 对象,它可以实现接口 InvocationHandler
。通过其中一个代理接口的代理实例上的方法调用将被指派到实例的调用处理程序的 Invoke
方法,并传递代理实例、识别调用方法的 java.lang.reflect.Method
对象以及包含参数的 Object
类型的数组。调用处理程序以适当的方式处理编码的方法调用,并且它返回的结果将作为代理实例上方法调用的结果返回。
例子代码如下:
public class TestHandler implements InvocationHandler {
private Object obj;
public Object getProxy(Object obj){
this.obj = obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this);
}
//方法调用
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object ret = null;
try {
ret = method.invoke(this.obj, args);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
}
这样当我们使用这个对象的时候,我们去的去的了一个对象的代理,如果我们去执行一个方法的时候,他会去调用invoke方法,将操作权转接到代码中进行功能扩展。
spring依靠注入post-processer的方式来进行功能的扩展,扩展了他的属性
正在研究的过程中,认识不一定正确,待进一步确认
分享到:
相关推荐
### Spring 源码分析——设计模式篇 #### 一、引言 Spring框架作为Java企业级开发领域中不可或缺的一部分,其内部集成了多种设计模式,不仅有助于提高系统的可维护性和扩展性,还能够帮助开发者更好地理解和应用...
通过源码分析,开发者可以更好地理解Spring Boot的自动装配、启动流程以及如何自定义启动器。Spring Boot的自动装配原理涉及到Spring Boot的核心特性,它简化了基于Spring的应用开发,通过自动配置减少了大量的配置...
本篇将深入探讨Spring 4.2.4版本的源码,通过分析各个模块,揭示其背后的运行机制和设计原理。 首先,我们关注的是`spring-orm-4.2.4.RELEASE-sources`,这是Spring与ORM(Object-Relational Mapping)框架集成的部分...
本篇将围绕SpringCloud的核心组件进行源码分析,包括Eureka服务注册与发现、Ribbon客户端负载均衡、Hystrix断路器、Zuul路由网关以及Config分布式配置中心,旨在帮助读者深入理解这些组件的工作原理。 一、Eureka:...
压缩包中的"spring-5.2.6.RELEASE-docs.zip"包含了完整的API文档和用户指南,是学习和理解Spring源码的重要参考资料。"spring-5.2.6.RELEASE-schema.zip"则包含框架使用的XML schema定义,帮助开发者理解和编写配置...
学习Spring源码能够帮助开发者: - **理解设计模式**:Spring大量使用了工厂模式、单例模式、代理模式等,深入源码有助于提升设计能力。 - **优化性能**:了解内部工作原理后,能更好地调整配置,优化应用性能。 - ...
本篇将围绕Spring Framework 5.0.14.RELEASE的源码展开详细讨论,旨在帮助读者深入掌握这一强大框架的工作原理和设计思想。 首先,我们来了解一下Spring Framework的核心概念。Spring Framework是一个全面的后端...
通过源码分析,开发者可以更深入地了解其工作原理,而各种工具则有助于提高开发效率和确保项目的稳定运行。通过阅读提供的使用手册和相关博客,你可以获取丰富的知识,从而在实际项目中充分利用Spring Data MongoDB...
本篇文章将深入探讨Spring Framework 5.3.0的核心概念、关键特性以及源码分析,旨在帮助开发者更好地理解和应用这一强大工具。 1. **核心模块解析** Spring Framework由多个模块组成,包括Core Container(核心...
这篇文档通过详细剖析Spring5的源码,将复杂的概念以深入浅出的方式呈现出来,让学习者能够更好地掌握Spring的内在工作原理。 首先,我们要了解Spring框架的核心组件——依赖注入(Dependency Injection,简称DI)...
本篇将深入探讨 Spring MVC 的核心概念、工作原理以及源码分析,旨在帮助开发者更高效地理解和运用这一强大的框架。 一、Spring MVC 概述 Spring MVC 是一种轻量级的 Web 开发框架,它简化了 Java Web 应用程序的...
本篇文章将围绕“Spring Analysis Master”这一主题,深入探讨Spring框架的相关组件及其源码分析。 一、Spring核心模块 1. IoC(Inversion of Control)容器:Spring的核心特性是控制反转,它通过依赖注入...
本篇文章将围绕“NuLiing-spring-cloud-sample-master”项目,深入探讨其背后的Java Spring Cloud技术栈,以及如何利用这些技术构建高效、可扩展的后端应用。 首先,让我们理解“NuLiing-spring-cloud-sample-...
《Spring Framework 4.1.0.RELEASE:深入解析与源码分析》 Spring Framework作为Java开发中的核心框架,以其强大的功能和灵活的设计理念,深受广大开发者喜爱。本篇文章将聚焦于Spring Framework 4.1.0.RELEASE版本...
5. **源码分析** `dubbo-spring-boot-autoconfigure-2.7.8-sources.jar`提供了模块的源代码,开发者可以通过阅读源码深入了解自动配置的实现细节,包括如何加载配置、如何创建Bean以及如何将Dubbo的配置项映射到...
三、源码分析与学习 阅读Spring Framework 5.0.x的源码可以帮助我们理解其内部机制,提升开发技能。重点关注以下几个方面: 1. **Bean的生命周期管理**:研究BeanFactory和ApplicationContext如何创建、初始化和...
- Controller、ModelAndView、HandlerMapping 等关键组件的源码分析有助于理解请求处理流程。 6. **事务管理** - Spring 提供了编程式和声明式的事务管理,通过 TransactionManager 和 ...
本篇将深入剖析"spring-mybatis-1.2.5-src.zip"中的源码,帮助读者理解这两个框架的整合机制及其工作原理。 1. **Spring的核心概念** - **依赖注入(Dependency Injection,DI)**:Spring通过DI来管理对象的创建...
源码分析对于理解内部机制和定制化实现至关重要,而“工具”可能指的是Spring RPC如何帮助开发者简化远程调用的过程。 根据压缩包子文件的文件名称,我们可以推测这个案例包含以下三个部分: 1. **spring-rpc-...
【Spring 框架概述】 Spring 是一个广泛使用的开源 Java 应用开发框架,它的核心目标是简化企业级应用的开发。...通过深入学习 Spring 源码,开发者可以更好地理解其工作原理,进一步优化和定制应用的实现。