这是一个简单的基本java问题:
在我们的公司代码中,我们开发了一个弹簧应用程序,并在我们的bean中大量使用注入。
在我们的bean中,我们将接口定义为类成员,就像在我们的应用程序上下文摘录中一样:
<bean id="testDAO" class="it.dao.commerciale.TestDAO">
<property name="sessionManager" ref="sessionManager" />
<property name="iDAO" ref="testDAO" />
<property name="iService" ref="testService" />
</bean>
然后我们在我们的类中将相应的成员定义为私有,使用getter和setter方法进行togheter:
public class TestDAO implements ITestDAO {
private IService iService;
private IDAO iDAO;
public IDAO getiDAO() {
return iDAO;
}
public void setiDAO(IDAO iDAO) {
this.iDAO = iDAO;
}
}
这是我们过去常常做的事情,但现在我开始研究为什么要这样做。
将接口定义为类的私有成员有什么用?
此外使用前缀&#34; I&#34;接口的命名约定似乎打破了Spring bean验证规则,因为它抱怨缺少一个明显到位的setter。 如果我删除&#34;我&#34;前缀错误消失。
阅读评论后编辑:
因此,例如,如果我有一个引擎(作为接口),我可以在TruckEngine(实现引擎)类中放入一个接口成员&#34; Radiator&#34;,它不依赖于特定的实现散热器职责。
验证前缀问题怎么样?
编辑2:
阅读dunni评论后,我发现验证错误是由Eclipse中的自动getter / setter生成引起的。 简而言之,如果该属性名为iPropertyName(带有1个字母的低引号前缀),则get和set方法将创建一个&#34; getiPropertyName&#34;使用小写前缀,这会破坏验证。我在STS 3.8.1上验证了这一点。
由于