之前的有作者JingQ发布了一些自己学习Spring源码的一些心得和教程,我今天只谈一下我们在面试中的如果面试官问到Spring,你应该怎么去回答,来获取面试官的青睐。在我的印象中,Spring框架可以说是Java世界里面最为成功的框架了,在企业的实际的应用里面,大部分的企业架构都是基于Spring框架的,它的成功来自于他的理念而不是技术,最为核心的理念是IOC和AOP。接下来我们就来讲讲这个Spring吧!
Spring的历史
Spirng从2004年第一个版本至今已经有十多年了,Spring的出现是因为当时Sun公司EJB的失败,因为当时的EJB2的时代,那配置文件可是非常的多呀,亏了我没在那个时代去做开发,去写代码,不然我估计自己可能怎么凉的都不知道。
而在之后的EJB3客服了配置方面的冗余,但是对于JAVAEE开发来说,更为致命的是对EJB容器的依赖,也就是EJB智能运行在EJB容器中,EJB容器的笨重,让很多企业感到熟手无策。
正是因为EJB的没落,导致了Spring的崛起,在Spring中,它会认为一切Java的类都是资源,而自愿都是BEan,容纳这些Bean的Spring所提供的IOC容器,所以Spring是一种基于Bean的编程。
面试问法一:什么是Spring
回答:Spring是一个J2EE的框架,这个框架提供了对轻量级IOC的良好支持,同时也提供了对AOP技术非常好的封装,相比于其他的框架,Spring框架的设计更加模块化,框架内的每个模块都能完成特定的工作, 而且各个模块可以独立的运行,不会相互的前置,因此,在使用Spring框架的时候,我们可以使用整个框架,也可以使用框架中的一部分,例如只使用AOP模块的日志管理。
回答这个问题的时候,不需要去特别的背诵到底什么是Spring,我们要说出自己对Spring框架的理解就可以了,很多时候面试官可能是问你的是你自己对框架的理解,而不是全篇背诵。
面试问法二:Spring有哪些模块
图解如下,
通过图中的方法,可以把创建对象的过程委托给TeaFactory来完成,在我们需要使用对象的时候,我们就直接调用Factroy类中的getTea方法即可,具体创建对象逻辑放在了TeaFactory中来实现,我们只需要把Greentea换成BlackTea,那么系统中所有的AbstractTea1 = new GreenTea()这个方法就会替换成BlackTea了,只需要在一个地方做改动就能完成很复杂的事情了。
虽然说采用工厂模式之后,增强了系统的可扩展性,但是从本质上讲,工厂模式只不过是把程序中变动的逻辑全部都放到了工厂类中了,当系统的类比较多的时候, 就会经常的去改动工厂类中的代码,我们采用IOC实现方法之后,就会有另外一种。
图解