【问题标题】: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 的好习惯。