【问题标题】:Thought on Code to Interface in Spring?在 Spring 中考虑代码到接口?
【发布时间】:2011-01-20 09:46:33
【问题描述】:

我知道在春天我们都会编写接口代码。所以实现类根本不应该为外界所知。但它是一个公共类,所以任何人也可以创建实现类的实例。你如何防止这种情况发生?您是否将构造函数设为私有?由于spring创建了一个通过反射的实例,它应该没问题。有人考虑过吗?我知道如果你创建一个实现类的实例,它将无法正常工作,因为依赖项都是null,但这不是重点。

【问题讨论】:

    标签: java spring interface dependency-injection


    【解决方案1】:

    Spring 依赖注入的目的不仅仅是隐藏实现类。
    主要的一点是你不必担心使用哪个实现类。我们将提供类的责任交给 Spring 的容器。

    依赖注入的基本思想是有一个单独的对象,一个汇编器,它使用查找器接口的适当实现来填充列表器类中的一个字段。
    有关更多信息,请参见Martin Fowler

    【讨论】:

      【解决方案2】:

      我不确定,但我假设使用 Spring 您可以将实现类设为包私有而不是公共的。我知道这是使用 Guice 的好习惯。

      【讨论】:

        【解决方案3】:

        如果您只想要整个应用程序中的单个实例,您可以使用工厂方法/单例。引用该类的其他类也将使用相同的方法。

        来自http://static.springsource.org/spring/docs/2.0.x/reference/beans.html

        3.2.3.2.2。使用静态工厂方法进行实例化

         <bean id="exampleBean"
               class="examples.ExampleBean2"
               factory-method="createInstance"/>
        

        【讨论】:

        • 这不能回答问题。
        猜你喜欢
        • 2017-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-07
        • 2011-03-04
        • 1970-01-01
        相关资源
        最近更新 更多