帮别人建设网站多少利润,网站做轮播图的意义,网站描述怎么写利于seo,静态网站开发技术1,今天面试官问我spring的加载机制有哪些---这么抽象的问题作为一个十多年经验的自己写过MVC,IOC,ORM, 等各种中间件小框架的开发人员也回答不出来~确切的说是无从谈起,不知道从哪个角度说这个事情,在我的观点里这个问题本身的问法就有问题,什么叫加载机制抽象的问题作为一个十多年经验的自己写过MVC,IOC,ORM, 等各种中间件小框架的开发人员也回答不出来~确切的说是无从谈起,不知道从哪个角度说这个事情,在我的观点里这个问题本身的问法就有问题,什么叫加载机制,spring加载的是什么????我很好奇在问别人spring的加载机制有哪些的时候意图想知道spring是如何被启动的,还是spring是如何加载他管理的组件的;这个问题本身就有很大的歧义~(我第一反应是后者,如果你是问前者,然后告诉我通过什么new XmlApplicationContext(app.xml)或者WebApplicationContext...这种是你的正确答案,我就会觉得你很LOW~哈哈,当然后者其实也是一个很LOW的面试问题~).WEB容器加载Spring这种说法其实是不合适的~Spring本身并没有纳入web容器的管理~用加载这个词来描述Spring启动之后对被管理组件的初始化和管理也是非常可笑的说法~所以其实你可以忽略这个面试官给你的影响的,很多面试官本身自个儿水平就不咋样,网上找一些有所谓正确答案的题目...很多时候他们其实自己都不知道自己在干什么问什么~2,Spring最核心的东西是什么?尽管现在的spring看起来那么庞杂似乎保罗万象,但他最核心的东西是容器~什么是容器?上面有人说容器就是个Map,这句话对也不对,因为容器不仅仅是存放组件,它最主要的功能是管理组件的生命周期和依赖.对象的创建(包括初始化),销毁....当你从容器中get一个组件的时候,该组件所依赖的组件也必须相应的被初始化(当然也有可能是lazy的,只在真正用到的时候);组件A依赖B和C,C依赖D,D依赖B.....我要得到组件A就需要相应的一层层的初始化其他组件,其他组件之间可能存在相互依赖这种情况,这种层层依赖的管理如果人工管理就会非常麻烦~容器能帮助你管理组件,让这种依赖看起来扁平一些~这是容器核心要解决的问题~至于其他IOC外围的功能比如MVC,AOP,集成其他第三方组件,都是次要的~从这一层面而言,Spring容器更像一个粘合剂~各个组件之间的连接和集成的桥梁~3,有人提到了WEB容器(Tomcat),那就说说WEB容器;如果你看过tomcat的代码你就发现,Tomcat本身就是一个容器~他管理着他自身组件的生命周期,你可以看一下tomcat conf目录下的 server.xml,他是一个层次结构的包括Server,Connector,Engine,Context Listener 和我们直接关系的Servlet....他的作用和spring的applicationContext.xml本质上是一样的~Tomcat读取这个XML然后初始化这些组件,跟Spring读取XML初始化管理自己组件的本质其实是一样的;这其实存在一个问题:他们是两个容器,对彼此容器内的东西没有控制权,这两个容器是不兼容的~ 廖雪峰 已经说了Tomcat根本不知道你是否使用了Spring,Tomcat根据自己的XMLs(包括web.xml)管理自己的组件比如Servlet;Spring根据自己的applicationContext.xml(s)管理自己的组件~好些年前我遇到过一个问题:public class LoginServlet extends HttpServlet{private static final long serialVersionUID 1L;//这里有没有办法直接从Spring容器中获得UserService的实现呢? AutowiredUserService userService;有没有办法对Servlet的属性直接做依赖注入呢?大家思考一下?~另外一个问题:有没有办法让Spring来管理我们的Servlet,使得上面的UserService可以注入呢?注意:我这里说的是容器定义的Servlet~不是什么你自己定义的Action或者Controller;4,另外我觉得其实没有必要非得研究JVM或者GC,我是说没有必要为了面试去研究他们,如果你感兴趣,时间允许,没有任何问题~否则就会像你说的:看了-用不到-忘了~至于非得学什么新的框架~我觉得也没必要吧;在我看来学会使用一个框架是很简单的事情,但学精任何框架都是很困难的事情~多看看你现在会的框架,看看他们的代码知道为什么要那么干,知道他们功能的边界,什么事情不能干的,有没有更好的实现办法~多知道一些本质性的东西,我觉得可能会更好一些~另外有时间关注一下新的技术,知道他们是什么能干吗就没问题了;我觉得自己是一个需求驱动型的~遇到问题有思路就行了~5,还有,有人说自己实现一个Spring也是非常简单的事儿~按照这个逻辑我是不是也可以说造个核反应堆也是一个很简单事儿?我只能说你考虑的太少了,很多事情原理很简单,但实际上你要遇到的问题远比你想象的多~稍微严谨一点的表述是自己写一个类似Spring的玩具IOC容器也比较简单~