使用接口作为类成员

时间:2016-10-25 09:06:33

标签: java spring javabeans bean-validation

这是一个简单的基本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上验证了这一点。

由于

0 个答案:

没有答案
相关问题