当前位置: 首页 > 后端技术 > Java

【专访普通人VS专家】Spring中Bean的作用域有哪些?

时间:2023-04-01 14:11:00 Java

一个工作了3年的小伙子去面试,被问到关于Spring的问题。这个问题比较简单,他却没有回答。虽然他可以通过搜索引擎找到答案,但是如果他不明白,下次面试他就做不出来了!这个面试题是:“Spring中bean的作用域有哪些?”对于这个问题,看看普通人和专家的回答。普通人:嗯。......师父:嗯,这个问题可以从几个方面来回答。首先,Spring框架中的IOC容器可以非常方便的帮助我们管理应用中的Bean对象实例。我们只需要根据Spring中提供的xml或者注解,告诉IOC容器哪些bean需要IOC容器管理即可。其次,既然是Bean对象实例的管理,就意味着这些实例是有生命周期的,也就是所谓的作用域。从理论上讲,一般的生命周期只有两种:singleton,即单例,也就是说整个Spring容器中只会有一个Bean实例。prototype,译为原型,意思是每次从IOC容器中获取指定的Bean,都会返回一个新的实例对象。但是在基于Spring框架的Web应用中,增加了一个session纬度来控制Bean的生命周期。请求有三个主要选项。对于每个http请求,都会创建一个新的Beansession,以session会话为纬度,相同的Session共享同一个Bean实例,不同的session生成不同的Bean实例globalSession。对于全局session纬度,上面共享同一个Bean实例是我对这个问题的理解。总结“技术框架的本质是解决具体的问题,所以如果能站在技术的角度去思考Spring”,遇到这类问题,可以根据场景推断出答案,就像这位大师的回答一样。就像我们现在编写CRUD代码一样,它已经成为让我们完成复杂业务逻辑开发的基本能力。普通人VS专家访谈系列到此结束。有不懂的技术面试题,欢迎私信我。版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!