一个工作3年的小伙子,去面试被问到Spring里面的问题。
这个问题比较简单,但是他却没有回答上来。
虽然他可以通过搜索引擎找到答案,但是如果没有理解,下次面试还是不会!
这个面试题是: “Spring中的Bean,作用域有哪些?”
对于这个问题,看看普通人和高手的回答。
普通人:
嗯。。。。。。。
高手:
好的,这个问题可以从几个方面来回答。
首先呢,Spring 框架里面的IOC容器,可以非常方便的去帮助我们管理应用里面的Bean对象实例。
我们只需要按照Spring里面提供的xml或者注解等方式去告诉IOC容器,哪些Bean需要被IOC容器管理就行了。
其次呢,既然是Bean对象实例的管理,那意味着这些实例,是存在生命周期,也就是所谓的作用域。
理论上来说,常规的生命周期只有两种:
- singleton, 也就是单例,意味着在整个Spring容器中只会存在一个Bean实例。
- prototype,翻译成原型,意味着每次从IOC容器去获取指定Bean的时候,都会返回一个新的实例对象。
但是在基于Spring框架下的Web应用里面,增加了一个会话纬度来控制Bean的生命周期,主要有三个选择
- request, 针对每一次http请求,都会创建一个新的Bean
- session,以sesssion会话为纬度,同一个session共享同一个Bean实例,不同的session产生不同的Bean实例
- globalSession,针对全局session纬度,共享同一个Bean实例
以上就是我对这个问题的理解。
总结
“技术框架的本质是去解决特定问题的,所以如果能够站在技术的角度去思考Spring”
当遇到这种问题的时候,就可以像这个高手的回答一样,能够基于场景来推断出答案。
就像我们现在写CRUD代码,它已经变成了一种基本能力去让我们完成复杂业务逻辑的开发。
本期的普通人VS高手面试系列就到这里结束了。
有任何不懂的技术面试题,欢迎随时私信我
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Mic带你学架构
!
如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!
来源:https://www.cnblogs.com/mic112/p/16257821.html
本站部分图文来源于网络,如有侵权请联系删除。