当前位置:  开发笔记 > 编程语言 > 正文

在Spring Bean Context中有很多未使用的bean会浪费大量资源吗?

如何解决《在SpringBeanContext中有很多未使用的bean会浪费大量资源吗?》经验,为你挑选了2个好方法。

我的模型层正被一些不同的项目使用,我想为模型使用单个XML Spring配置文件,而不管哪个项目正在使用它.

我的问题是:由于并非所有bean都在所有项目中使用,我是否在没有实例化的情况下浪费资源到任何重要数量?我不太确定Spring是如何加载它们的,因为它直到现在才成为一个问题.

有任何想法吗?



1> MetroidFan20..:

摘自Spring参考手册:

ApplicationContext实现的默认行为是在启动时急切地预先实例化所有单例bean.预实例化意味着ApplicationContext将急切地创建和配置其所有单例bean作为其初始化过程的一部分.通常这是一件好事,因为这意味着将立即发现配置或周​​围环境中的任何错误(而不是可能是几小时甚至几天).

但是,有时候这种行为不是想要的.如果您不希望在使用ApplicationContext时预先实例化单例bean,则可以通过将bean定义标记为延迟初始化来有选择地控制它.一个延迟初始化的bean向IoC容器指示是否应该在启动时或首次请求时创建bean实例.

通过XML配置bean时,这个延迟加载由[bean元素]上的'lazy-init'属性控制; 例如:


但是,除非您的bean使用文件锁或数据库连接等资源,否则我不会过分担心简单的内存开销,如果您更容易为多个(但不同的)配置文件配置这一配置.



2> Tom De Leu..:

除了其他注释之外:还可以通过在元素上使用'default-lazy-init'属性来指定要延迟初始化的整个配置文件; 例如:


    

这比将lazy-init属性添加到每个bean 要容易得多,如果你有很多这样的话.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有