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

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(只是因为可以这样做)


沧海一幻觉
浏览 127回答 2
2回答

慕虎7371278

问题:我仅在 TibcoPasswordRetriever 类中使用 TibcoPasswordUtil。依赖注入仍然是一个好主意吗?如果TibcoPasswordUtil是Singletone. 您没有TibcoPasswordUtil在问题中提供课程。添加Util到名称在这里并不意味着很多。考虑写更多关于架构和背景的文章。进一步的问题:我们是否应该创建将每个可能的对象公开为 spring bean(只是因为可以这样做)不,不是,因为更好的解决方案是不要太依赖框架。问自己这样的问题:如果你不需要,那么为什么它有好处呢?为什么不这样做有好处呢?就像我上面写的那样,更少耦合的代码更好。将来改变框架等会更容易。

繁花不似锦

不,除非有需要,否则不应将每个对象都公开为 Spring bean。那些您认为必须由框架实例化和维护的类必须成为一个 bean。此类类的一个示例是数据库访问类。这些类型的类可能有多种实现,并且选择使用哪个实现可能取决于某些外部配置。在这种情况下,您可以将管理实例的责任委托给框架。如果您确定您正在使用的 Util 类只有一种类型,并且管理其实例时不会增加任何复杂性(就像它必须是 Singleton),那么您不必将其设为 bean。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java