看了马士兵讲的spring实现原理视频,代码部分就不列出来了,只是表达下看完视频后的想法,对一些模糊的概念进行总结
一、概念
1.Dependency Injection:依赖注入 完成bean与bean之间的依赖关系,通过配置文件中bean id定义的容器,依赖容器中的指定对象完成创建实例
2.Inverse of Control:控制反转 和DI是一个概念 当某个角色(java实例)需要另一个角色的协助,传统程序中由调用者创建被调用者的实例,但通过spring,创建被调用者的工作可以由容器(spring)来完成,直接通过配置XML完成注入调用者3.AOP aspect orient programming:面向切面编程(也是面向方法编程) 用于处理系统中分布于各个模块中的交叉关注点(方法)而不影响原来的代码。如日志、安全检查、对象池管理,通过spring的配置文件实现动态代理(参考设计模块中代理模式)。
DI原理:通过(类似DOM4J、JDOM等)读取xml配置文件格式获取信息,将获取的信息配合反射实现代码中对象new的替换,通过容器控制对象之间的依赖关系完成创建对象需要的实例。
AOP原理:参考动态代理实现原理
在程序运行时,创建代理类的XX.class(complitor、gclib、asc等多种方式实现),并通过反射机制加载调用其接口的方法。
1.通过jdk自带的reflect.proxy实现
Proxy.newProxyInstance(实现类.getclass().getclassloader(),实现类.getclass.getinterfaces().代理类对象)
这个方法完成如下工作:
a.根据传入的第二个参数interface动态生成一个类,实现了interface中的接口,并且继承了Proxy类重写了hashcode,toString等方法
b.通过传入的第一个参数classloder将刚生成的类加载到jvm中
c.利用第三个参数调用代理的构造函数创建代理的对象
d.将代理生成的实例返回给客户端
2.上述代理的实现过程通过jdk1.6的包中complitor实现 (见马士兵代理模式) (1).生成代理类的.java文件 (2)自动编译成.class (3)反射加载.class (4)调用接口委托类的方法
相关推荐
NULL 博文链接:https://seadsf.iteye.com/blog/1874337
spring 资料spring 资料spring 资料
Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...
Spring3.2 Spring4.3 Spring5.0三个版本的jar包,都是官方下载,亲测可用,放心下载。
Spring源代码解析(一):Spring中的事务处理 Spring源代码解析(二):ioc容器在Web容器中的启动 Spring源代码分析(三):Spring JDBC Spring源代码解析(四):Spring MVC Spring源代码解析(五):Spring AOP获取Proxy ...
Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注...
spring boot , spring cloud alibaba, spring cloub 版本选型
spring配置 spring配置 spring配置 spring配置 spring配置
spring定时器spring定时器spring定时器spring定时器spring定时器
将spring2的开发包spring.jar替换为附件中压缩文件的所有jar包,既可以将spring2.0的应用升级到spring3.0.5
spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....
Classes contained in spring-mock.jar: org.springframework.mock.jndi.ExpectedLookupTemplate.class org.springframework.mock.jndi.SimpleNamingContext.class org.springframework.mock.jndi....
简单的spring cloud项目,适合新手学习使用
很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程很好的一个spring教程
spring精华spring精华spring精华
spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...
spring4.x中的jar包下载,spring4.0.6下载,spring最新稳定版jar包下载 http://maven.springframework.org/release/org/springframework/spring/ 这个链接中有各种稳定版的jar包下载 目前官网上大部分都要maven下载
spring 3.2.4 Realease 的所有jar包: spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-...
spring_dubbo spring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_...
SPRING 笔记SPRING 笔记SPRING 笔记