为了账号安全,请及时绑定邮箱和手机立即绑定

我们应该将每个对象都暴露为 spring bean 吗?

我们应该将每个对象都暴露为 spring bean 吗?

沧海一幻觉 2023-12-13 14:55:35
class TibcoPasswordRetriever {    private TibcoPasswordUtil tibcoPasswordUtil;    public TibcoPasswordRetriever(TibcoPasswordUtil tibcoPasswordUtil) {        this.tibcoPasswordUtil = tibcoPasswordUtil;    }}class TibcoPasswordRetriever {    private TibcoPasswordUtil tibcoPasswordUtil;    public TibcoPasswordRetriever() {        this.tibcoPasswordUtil = new TibcoPasswordUtil();    }}这是 TibcoPasswordRetriever 的两个定义。问题:我仅在 TibcoPasswordRetriever 类中使用 TibcoPasswordUtil。依赖注入仍然是一个好主意吗?进一步的问题:我们是否应该创建将每个可能的对象公开为 spring bean(只是因为可以这样做)
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

问题:我仅在 TibcoPasswordRetriever 类中使用 TibcoPasswordUtil。依赖注入仍然是一个好主意吗?

如果TibcoPasswordUtilSingletone. 您没有TibcoPasswordUtil在问题中提供课程。添加Util到名称在这里并不意味着很多。考虑写更多关于架构和背景的文章。

进一步的问题:我们是否应该创建将每个可能的对象公开为 spring bean(只是因为可以这样做)

不,不是,因为更好的解决方案是不要太依赖框架。问自己这样的问题:

如果你不需要,那么为什么它有好处呢?

为什么不这样做有好处呢?

就像我上面写的那样,更少耦合的代码更好。将来改变框架等会更容易。


查看完整回答
反对 回复 2023-12-13
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

不,除非有需要,否则不应将每个对象都公开为 Spring bean。那些您认为必须由框架实例化和维护的类必须成为一个 bean。此类类的一个示例是数据库访问类。这些类型的类可能有多种实现,并且选择使用哪个实现可能取决于某些外部配置。在这种情况下,您可以将管理实例的责任委托给框架。

如果您确定您正在使用的 Util 类只有一种类型,并且管理其实例时不会增加任何复杂性(就像它必须是 Singleton),那么您不必将其设为 bean。


查看完整回答
反对 回复 2023-12-13
  • 2 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信