为什么@Required设置为setter而不是字段?

时间:2012-06-08 23:32:27

标签: java spring setter required

如果我有以下课程:

package com.example;

import org.springframework.beans.factory.annotation.Required;

public class Customer 
{
    private Person person;

    public Person getPerson() {
        return person;
    }
    @Required
    public void setPerson(Person person) {
        this.person = person;
    }
}

为什么Spring中的@Required标签与setter绑定,而不是字段,就像这样?

package com.example;

import org.springframework.beans.factory.annotation.Required;

public class Customer 
{
    @Required
    private Person person;

    public Person getPerson() {
        return person;
    }
    public void setPerson(Person person) {
        this.person = person;
    }
}

依赖关系是属性已设置,但不需要绑定到填充该属性或字段的特定setter,除非我遗漏了某些内容。

1 个答案:

答案 0 :(得分:1)

传统上,bean具有定义为getter和/或setter的属性。可以省略私有字段(有时称为“虚拟”字段)。在新的Java EE标准中,bean更松散,并且可能还有一个定义为公共字段的属性。

尽管如此,Spring还是提出了最新的标准,并对方法i.o进行了注释。字段的优点是可以通过AOP(简单字节代码操作)拦截访问。