加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 使用getBean而不是Spring中的方法注入

发布时间:2020-12-15 01:33:49 所属栏目:大数据 来源:网络整理
导读:我有一个具有多个屏幕的应用程序,并通过按钮选择每个屏幕.每个屏幕都包含相当重的组件,因此重要的是只有激活屏幕在内存中 所有其他屏幕都应该可用于垃圾收集. 该应用程序使用Spring作为粘合剂,目前它使用getBean()切换屏幕: //event handler for a specific

我有一个具有多个屏幕的应用程序,并通过按钮选择每个屏幕.每个屏幕都包含相当重的组件,因此重要的是只有激活屏幕在内存中 – 所有其他屏幕都应该可用于垃圾收集.

该应用程序使用Spring作为粘合剂,目前它使用getBean()切换屏幕:

//event handler for a specific button
public void actionPerformed(Event e) {
    setScreen( (Screen) applicationContext.getBean("screen1"));
}

“screen1”是原型bean,因此在按下按钮时会创建一个新的屏幕实例.此外,setScreen()是唯一在应用程序中维护对屏幕的引用的位置,因此之前活动的屏幕可用于垃圾回收.我还没有测试过这个,但我希望它能正常工作 – 这里没有火箭科学!

问题是 – 在阅读this page之后关于为什么getBean()被认为是坏的 – 我想知道是否有一种更惯用的方法来实现相同的结果同时删除对getBean()的依赖.

我已经看过方法注入,它在我看来引入复杂性并没什么好处.这是学习的另一个概念,更多魔术,增加对CGLIB的依赖等.如果我真的想要删除对Spring的依赖,我可以引入一个暴露getBean()方法的接口.

getBean()和方法注入是我的唯一选项还是我错过了什么?

如果是这样,getBean()真的那么糟糕吗?

最佳答案
Setter注入,属性注入或构造函数注入都创建了一个松散耦合的应用程序,通过模拟更容易测试.它还可以防止任何类直接依赖于Spring(或其他IoC容器)类.当您不必手动调用getBean()时,它最终只是一个更清洁的整体解决方案.

我认为您应该对配置依赖项的概念感到满意. “魔法”根本不是真正的魔法,只是你在使用它时会感到舒服的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读