当前位置: 首页 > 互联网 > 正文

你的spring是自学的吧?

当我第一次参加java面试的时候,在一堆spring相关问题之后,面试官直接来了一句:你的spring是自学的吧。我没好意思说啥,甚至有些不太好意思,因为我自学的很不好。事实就是我没有很多的spring开发经验。唯一一个用spring的项目,框架也是别人搭好的。地基搭好了,我只是在上面添砖加瓦,所以spring的核心思想,及各种使用的办法都没有清晰明了的概念。又反过来回到面试官的问题,试问谁的spring不是自学的?工作好多年,新技术,新语言也基本上都是自己在学习,要是没有自学,也真不知道自己能不能应付当下的工作,和新的挑战了。

回到spring,这些天总在反复理解spring的概念,什么IOC,什么DI啦。我觉得这要从spring是用来做什么事情的来理解。spring是一个框架,它的代码本身与任何的业务系统没有直接的联系。通常我们的业务系统就不得不定义和声明一些类和接口,代码中完成类与类,对象与对象的关联与操作。代码之间存在类与类,类与接口之间的关系可称之为耦合。以前我们在实现业务代码的时候,各种new操作,set方法等等这些都造成了我们的业务代码不容易修改和重用。系统运行过程中,就往往过多的创建实例,造成资源的浪费,同时也增加了垃圾回收的压力,降低了服务器的真实性能。

而spring就是这样一种轻量级的框架,我们可以将业务系统中定义的各种类的实例化交由spring来管理,这样spring就相当于一个容器,存放各种相互依赖的对象实例。当我们的业务系统代码中需要用到某个对象时,就可以到容器中去查找是否有,如果容器中有就可以直接拿来使用,而不必在使用的时候在业务代码中进行实例化。spring会根据上下文的配置或是成员变量在代码中的注解,将对象进行注入(依赖注入)。通过依赖注入,业务代码中的各类之间降低了代码的耦合。而spring本身不关注业务系统的逻辑,它运用的是IOC和DI思想,并在此思想上构成了这样一个通用的框架。

spring的IOC可认看成是工厂模式的升华,可以把IOC看成一个大工厂,只不过这个大工厂里生成的对象都是XML或者是注解的代码中给出的,然后利用Java的“反射”机制,给合类名生成相应的对象。spring的这种机制,可以很方便的将其它的类引入到我们的业务系统中,在代码中自动注入并使用它的某些方法等。

IOC是一种设计模式,这种新式的模式并没有在GOF中。之前我也没有好好的读过《设计模式》,近日来的阅读,让面象对象的接口设计给我来的各种惊奇。工作中的碰到的不同场景其实都可以往设计模式上去思考一番,是否可以运用这样的方法来改善我们的代码结构,或者是重构等等。过往的开发,我们往往太注重业务实现,而没有在代码的结构,重构和可扩展上面考虑的很详细。自学spring让我在这些方面领会到了很多。

Btw:上速的依赖注入及spring的思想等,是自己翻阅各种资料理解的结果,未必完全正确。而这里说的spring指的是spring的核心框架,没有包括spring的aop,web,mvc框架等。

本文固定链接: http://www.byhard.com/?p=1542 | 海纳百川

该日志由 byhard 于2016年03月30日发表在 互联网 分类下,
原创文章转载请注明: 你的spring是自学的吧? | 海纳百川
关键字: ,
【上一篇】
【下一篇】

报歉!评论已关闭.