20
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JavaEEアノテーション

Last updated at Posted at 2015-07-13

はじめに

アノテーションを制する者はJavaEEを制すということで、仕事で色々と試行錯誤している毎日なのですが、アノテーションについて説明しているサイトや書籍があまりないんですよね(英語が読めれば別なのでしょうが・・・)。そういうわけで、これまでに得た情報を自分なりにまとめていきたいと思います。正直アノテーション以前にJava経験があまりないので、色々と誤りがあるかもしれないことを最初にお断りしておきます。

一応下記のアノテーションで、ポピュラーなものをピックアップしていきたいと思います。

Named

DI対象として登録することを示すアノテーション。下記の例ではNamedBeanクラスを登録しています。


@Named
@Dependent
public class NamedBean {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    public String sayHello () {
        return "Hello!! " + this.name;
    }
}

Singleton

こちらもNamed同様にDI登録のためのアノテーションですが、シングルトンで生成されるようです。

@Singleton
public class SingletonBean {

    private String name;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    public String sayHello () {
        return "Hello!! " + this.name;
    }

}

Inject

NamedやSingletonによってDI登録したクラスのインスタンスを、文字通り「注入する」ためのアノテーション。下記の例では、TestLogicにnamedBeanとsingletonBeanのインスタンスを注入しています。

public class TestLogic {
    
    @Inject
    NamedBean namedBean;

    @Inject
    SingletonBean singletonBean;

RequestScoped

DI登録したクラスの生存期間を決定するためのアノテーションです。
上記のNamedBeanはRequestScopedを付与しているので、リクエスト~レスポンスの間まで生き続けます。

SessionScoped

DI登録したクラスの生存期間を決定するためのアノテーションです。
セッションが継続している、具体的にはログイン中は生き続けます。

ApplicationScoped

DI登録したクラスの生存期間を決定するためのアノテーションです。
アプリケーションの開始から終了まで生き続けます。
この辺はServlet/JSPのスコープ定義に似ているので理解しやすいですね。

ConversationScoped

DI登録したクラスの生存期間を決定するためのアノテーションです。
独自のスコープ定義をできるアノテーションのようです。
上記のスコープで表せない場合に使用するようですが、あまりよく分かっていません。

Dependent

DI登録したクラスの生存期間を決定するためのアノテーションです。
このアノテーションを指定した場合は、注入先と同じスコープが適用されるとのこと。
下記で詳しく検証していただいている方がおられたので参考にどうぞ。

20
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?