`
kris_feng
  • 浏览: 10291 次
社区版块
存档分类
最新评论

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)调用接口委托类的方法
分享到:
评论

相关推荐

    spring 小记

    这篇小记将深入探讨Spring的主要组件和关键特性,带你一步步走进Spring的世界。 首先,我们要理解Spring的核心——依赖注入。在传统的Java程序中,对象之间的依赖关系通常是硬编码的,这使得代码难以测试和维护。...

    我的日常小记:spring以及mybatis最终源码

    在本项目中,"我的日常小记:spring以及mybatis最终源码" 是一个记录了开发者个人编程经验的项目,主要涉及两个核心框架——Spring和MyBatis。这两个框架是Java开发领域中非常流行的技术栈,广泛应用于企业级后端...

    java小记.rar

    Spring MVC或Struts2等框架简化了这种模式的实现。作者可能记录了如何配置这些框架、创建控制器、模型和视图,以及如何进行单元测试。 除此之外,企业级Java组件如EJB(Enterprise JavaBeans)、JMS(Java Message ...

    J2EE开发之常用开源项目小记

    这篇小记主要关注了几个关键领域:持久层、MVC框架、视图层、JavaScript库以及缓存技术。下面将详细阐述这些知识点。 1. **持久层**: - **Hibernate**:是一个流行的ORM(对象关系映射)框架,允许开发者以面向...

    财经面试知识点.zip

    目錄Java基础篇基础鎖多线程并发对象JVMJVM内存结构堆和差Java内存模型垃圾回收...小记源码迈巴提斯春天Spring MVCJava基础篇基础Java的面向对象Java语言的三大特征封装、继承和多态Java 语言类型Java的自动类型转换...

    Big-Data-Interview:大数据面试知识点

    目录Linux、IOLinux基础IO分布式分布式理论数据结构与算法RedisRedis基础redis内部数据结构Git操作系统数据库MeavnHBaseHiveSpark面试计算机网络Spring面试RedisElasticsearch分布式JVM设计模式多线程JDK数据结构...

    Dislay分页

    5. **兼容性**:DisplayTag与主流的Java Web框架如Struts、Spring MVC等良好集成,可以无缝地融入到现有项目中。 `displaytag.properties`是DisplayTag的配置文件,用于设置标签库的全局属性,如默认的导出格式、...

Global site tag (gtag.js) - Google Analytics