2

次のクラスがある場合:

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 タグがフィールドではなくセッターに関連付けられているのはなぜですか?

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;
    }
}

依存関係は、プロパティが設定されていることですが、何かが欠けていない限り、そのプロパティまたはフィールドにデータを入力する特定のセッターに結び付ける必要はありません。

4

1 に答える 1

1

従来、Bean にはゲッターやセッターとして定義されたプロパティがありました。プライベート フィールドは省略できます (名前が「仮想」フィールドの場合もあります)。新しい Java EE 標準では、Bean はより緩く、パブリック フィールドとして定義されたプロパティを持つ場合もあります。

それにもかかわらず、Spring は最新の標準よりも前のものであり、フィールドのメソッドにアノテーションを付けると、AOP (単純なバイト コード操作) を介してアクセスを傍受できるという利点があります。

于 2012-06-08T23:59:38.333 に答える