spring小记
看了马士兵讲的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)调用接口委托类的方法
相关推荐
yupi0 2020-10-10
itjavashuai 2020-07-28
横云断岭 2020-06-11
横云断岭 2020-05-26
咻pur慢 2020-04-29
小鱿鱼 2020-03-09
shuiluobu 2020-03-03
MicroBoy 2020-02-29
neweastsun 2020-02-26
牧场SZShepherd 2020-02-23
牧场SZShepherd 2020-02-23
csuzxm000 2020-01-10
csuzxm000 2020-01-05
haidaoxianzi 2020-01-01
whbing 2019-12-23
方志朋 2019-12-19