关于java:面试普通人VS高手Spring-中Bean的作用域有哪些

5次阅读

共计 911 个字符,预计需要花费 3 分钟才能阅读完成。

一个工作 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 带你学架构
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!

正文完
 0