您好,登录后才能下订单哦!
Spring框架中IOC容器中对象的作用域是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
singleton
在IOC容器中只存在一个实例,也就是通过singleton作用域创建的对象是单例的。
这两个对象的内存地址相同,这就说明了当前对象确实是一个单例对象了。
prototype
第次从IOC容器中获取对象时,都返回一个新对象。
request
每次HTTP请求都会创建一个新的对象,当请求结束时则会自动销毁这个对象。该作用域只针对Web环境中使用。
session
同一个HTTP Session共享一个对象,不同的HTTP Session使用不同的对象,当这个Session结束时销毁这个对象。该作用域也是只针对Web环境中使用的。
globalSession
同一个全局Session共享一个对象,该作用域也是只针对Web环境中使用的。
延迟加载
我们知道当我们使用ApplicationContext接口启动IOC容器时,会自动的实例化所有singleton作用域的对象,这一点和BeanFactory不同。虽然这么做IOC容器启动时会很耗时,但是这样做也有这样做的好处。就是初始化后的对象会被存储在IOC容器的缓存中,这样当我们使用对象时,就不用在实例化对象了,从而提高了程序的运行效率。另一个好处就是可以帮助我们早点发现问题,如果我们配置的对象有问题时,则会直接在启动阶段抛出异常,而不是在程序的运行阶段。当然每种方式都有每种方式的好处与弊端,如果我们不想在启动时实例化对象,那么我们可以直接用spring为我们提供的lazy-init属性延迟我们对象的实例化。也就是说当把lazy-init属性值设置为true,然后通过ApplicationContext接口启动IOC容器时,当前对象是不会在启动阶段实例化的,而是在运行时才会实例化当前对象。
关于Spring框架中IOC容器中对象的作用域是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。