如何评价spring源码深度解析 开始读spring源码了 有什么能指教的吗
如何评价spring源码深度解析
您好,希望以下回答能帮助您 《SPRING技术内幕——深入解析SPRING架构与设计原理》 该书讲了spring的ioc容器原理,在xml的spring配置文件中,对象是如何解析并生成的。 spring的aop,面向切面编程。这两块是比较重要的,属于核心部分。 其他的如spring mvc ,spring jdbc与hibernate,ibatise集成,spring事务,spring security, spring 任务调度都有介绍。 大体来说,属于跟着代码走向,一个类一个类介绍了一下。其实代码都是有英文注释的。 跟着作都的思路看过来也还是可以的,最好是对照类图分析。 如您还有疑问可继续追问。
开始读spring源码了 有什么能指教的吗
研究框架的源码:
一、前提: 需要基础很扎实,做过很多项目了之后。
二、作用:
1、为了更好的掌握框架
2、更好的处理代码中出现的问题或者bug
3、为了以后担当系统架构师打下基础
三、好处:
1、为了自己更深入的了解框架的原理
四、怎么着手去研究:
1、先找一些spring的入门教程,先做几个例子,感受一下其功能,体验一下其IoC,AOP的例子。
2、通过一个具体的项目的实际代码去练练手,去发觉spring的原理。
3、看看spring的中文版live教程。
通过以上,你会很快入门,而且会越来越强大。
spring核心的知识
Spring是构造java应用的轻量级框架,这里的轻量级不是指类的多少,或者发行包的大小,而是指最小侵入,也就是说,你可以只需改最少的代码就可以获得它带来的好处,不像EJB中创建EntityBean那样具有很强的侵略性。
IOC(Inversion of Control)控制反转:它是Spring的核心,是一种将组件依赖关系的创建和管理置于程序外部的技术。根据我个人的使用是这么理解的:如果用IOC,一个类A中如果要用到其他类B的功能,必须在本类中写入B,同时声明对象B b= new B(),调用方法;而如果使用IOC后,这里的new B()就不必在这里写了,而是在运行时根据spring的xml中的配置动态地把B的实例对象传递给A。这是我个人的理解。IOC也叫DI(Dependency Injection)依赖注入,根据上面的解释应该很好理解字面的意思。IOC一般跟接口配合使用,两者都会得到好处,不难理解,使用接口的话没有IOC,把采用接口的程序连接起来,复杂度很高,代码量也不会少,而有了IOC,代码量会少很多。
面向切面编程(AOP):它是OOP的补充,而不是OOP的对手。不用OOP只用AOP写程序几乎不可能。 OOP可以有效解决很多问题,但在有些问题的解决上,运用AOP会使工作更加聪明轻松。AOP使得程序更加模块化,行程多个"关注点",而同一程序的很多部分重复使用这些"关注点"。举个容易懂的例子:系统日志和安全控制是很多程序典型的横切,横切的意思就是把程序横向展开,里面很多方法都会用到这些功能,而AOP是实现横切的有效工具。如果不用AOP,我们要有一个日志类,然后在每一个方法开始和结束时都要调用这个类的两个方法才能完成日志记录功能,而使用AOP之后,只需要声明日志类的相关方法应该在每个方法的开始和结束时调用就可以了。在Spring框架内部,AOP大量用于事务管理中。AOP的核心概念有下面几个:
联结点(JoinPoint):是程序执行过程中的一个特定点。例如:调用一个方法、类初始化、对象初始化等。它用来定义程序在哪里通过AOP加入横向逻辑。是AOP核心
通知(Advice):在某一个联结点处运行的代码成为通知.根据在联结点之前执行和之后执行分为前置通知和后置通知。
切入点(Pointcut):来定义某一个通知该何时执行的一组联结点。通常会组件复杂的切入点来控制通知什么时候运行。很重要
方面:通知 切入点的组合为方面,AOP就是指面向方面编程,指定义了逻辑和何时执行该逻辑。
织入(Weaving):将方面真正加入程序代码的过程。静态AOP在编译阶段完成。而Sping中在动态运行时完成。
目标(Target):指受到AOP修改的对象,也叫被通知对象。
引入(Introduction):通过引入,我们可以在一个对象中加入新的方法和属性,改变它的结构。即使一个类没有实现某接口,我们也可以修改它,使它像是实现了这个接口。
同样AOP分为静态和动态的。静态是指横切逻辑实在编译时就加入程序中的,如果修改横切需要重新编译代码,例如AspectJ。而Spring中是动态的,也就是运用了上面IOC的思想,横切逻辑在运行时动态加入。静态和动态的在一起使用时功能更加强大