カテゴリ: Micronaut 更新日: 2026/01/18

Micronautのアノテーション一覧!@Singleton・@Injectの基本を初心者向けにやさしく解説

Micronautのアノテーション一覧!@Singleton・@Injectの基本をやさしく紹介
Micronautのアノテーション一覧!@Singleton・@Injectの基本をやさしく紹介

先生と生徒の会話形式で理解しよう

生徒

「Micronautではアノテーションをたくさん使うと聞いたんですが、何のために使うんですか?」

先生

「Micronautでは、アノテーションを使ってDIやクラスの役割を指定します。設定ファイルを書かなくても、コードだけで動作を決められるのが特徴です。」

生徒

「@Singletonとか@Injectってよく見ますが、違いが分かりません」

先生

「@Singletonは管理対象のクラスを定義するため、@Injectはそれを利用するために使います。順番に整理すると理解しやすいですよ。」

生徒

「初心者でも使いこなせますか?」

先生

「基本のアノテーションから覚えれば大丈夫です。まずは代表的なものを見ていきましょう。」

1. Micronautにおけるアノテーションの役割

1. Micronautにおけるアノテーションの役割
1. Micronautにおけるアノテーションの役割

Micronautでは、アノテーションがフレームワークの動作を決める重要な役割を持っています。 Javaアノテーションを使うことで、クラスやメソッドがどのように扱われるかを明示できます。 これにより、XML設定ファイルを書く必要がほとんどなくなり、コードを読むだけで構成が理解しやすくなります。

特にDIと呼ばれる依存性注入では、アノテーションが中心的な存在です。 Micronautはコンパイル時にアノテーションを解析するため、実行時の負荷が少なく、高速に動作します。 初心者にとっても、アノテーションの意味を理解すれば、仕組みを直感的に把握できます。

2. @Singletonアノテーションの基本

2. @Singletonアノテーションの基本
2. @Singletonアノテーションの基本

@Singletonは、Micronautで最も基本的なアノテーションの一つです。 このアノテーションを付けたクラスは、DIコンテナによって管理されるBeanになります。 Singletonという名前の通り、アプリケーション全体で一つのインスタンスだけが作成され、再利用されます。

サービスクラスや共通処理を担当するクラスに付けることが多く、状態を持たない処理に向いています。 初心者はまず、ビジネスロジックを持つクラスに@Singletonを付けると覚えておくと分かりやすいです。


import jakarta.inject.Singleton;

@Singleton
public class TimeService {

    public String now() {
        return "現在時刻を返す処理";
    }
}

この例では、TimeServiceクラスがSingletonとして管理されます。 アプリケーション内のどこから呼び出しても、同じインスタンスが利用されます。 開発者は生成タイミングや管理方法を意識する必要がありません。

3. @Injectアノテーションの基本

3. @Injectアノテーションの基本
3. @Injectアノテーションの基本

@Injectは、DIを利用するためのアノテーションです。 すでに定義されているBeanを、別のクラスで使いたいときに指定します。 Micronautでは、フィールド、コンストラクタ、メソッドなどに@Injectを付けることができます。

特に推奨されているのがコンストラクタインジェクションです。 依存関係が明確になり、テストしやすいコードを書くことができます。


import jakarta.inject.Inject;
import jakarta.inject.Singleton;

@Singleton
public class SampleController {

    private final TimeService timeService;

    @Inject
    public SampleController(TimeService timeService) {
        this.timeService = timeService;
    }

    public void execute() {
        System.out.println(timeService.now());
    }
}

このコードでは、SampleControllerがTimeServiceに依存しています。 @Injectによって、Micronautが自動的にTimeServiceのインスタンスを渡します。 newを使わずに利用できる点がDIの大きな特徴です。

4. フィールドインジェクションとの違い

4. フィールドインジェクションとの違い
4. フィールドインジェクションとの違い

@Injectはフィールドにも付けることができます。 ただし、初心者のうちはコンストラクタインジェクションを理解することが重要です。 フィールドインジェクションは記述が簡単ですが、依存関係が見えにくくなる欠点があります。


import jakarta.inject.Inject;
import jakarta.inject.Singleton;

@Singleton
public class FieldSample {

    @Inject
    TimeService timeService;

    public void execute() {
        System.out.println(timeService.now());
    }
}

この書き方でも動作しますが、依存関係がコード上で分かりにくくなります。 学習段階では、なぜコンストラクタインジェクションが推奨されるのかを意識することが大切です。

5. よく使われるDI関連アノテーション

5. よく使われるDI関連アノテーション
5. よく使われるDI関連アノテーション

Micronautには、@Singletonと@Inject以外にもDIに関連するアノテーションがあります。 例えば、Beanのスコープを細かく制御するものや、条件付きで有効になるものがあります。 ただし、最初の段階では基本の二つを確実に理解することが重要です。

アノテーションを使うことで、設定よりもコードを中心とした開発スタイルになります。 Javaでの開発経験があれば、自然な形でMicronautに慣れていくことができます。

6. アノテーションを理解するメリット

6. アノテーションを理解するメリット
6. アノテーションを理解するメリット

Micronautのアノテーションを理解すると、アプリケーション全体の構造が見えやすくなります。 どのクラスが管理対象で、どこで利用されているのかが一目で分かります。 これは、保守や拡張を行う際に大きな強みとなります。

初心者のうちは、まず@Singletonと@Injectを使った小さなサンプルを作り、動きを確認するのがおすすめです。 その積み重ねが、MicronautのDIとアノテーション開発への理解につながります。

関連記事:
カテゴリの一覧へ
新着記事
New1
Quarkus
Quarkusのフォーム認証を基礎から解説!初心者向けセキュリティ入門ガイド
New2
Micronaut
MicronautプロジェクトをGradleで管理する基礎!build.gradleの役割を解説
New3
Micronaut
LinuxでMicronautをセットアップする方法!パッケージ管理とGradle連携
New4
Java
Javaのswitch文を徹底解説!case・defaultの書き方と実例まとめ
人気記事
No.1
Java&Spring記事人気No1
Quarkus
Quarkusプロジェクト構成の基本を完全解説!初心者でも迷わない「どこに何を書くか」ガイド
No.2
Java&Spring記事人気No2
Quarkus
QuarkusとMicronautとHelidonを徹底比較!軽量Javaフレームワークの違いを初心者向けに解説
No.3
Java&Spring記事人気No3
Quarkus
Quarkusのセキュリティ基礎を初心者でもわかるように解説!
No.4
Java&Spring記事人気No4
Micronaut
MicronautとSpring Bootの違いとは?アーキテクチャ比較で速さの秘密を理解する
No.5
Java&Spring記事人気No5
Quarkus
Quarkusの開発環境構築で躓きやすいポイントを完全解説!初心者でも安心して始めるためのチェックガイド
No.6
Java&Spring記事人気No6
Quarkus
Quarkusでマイクロサービス開発が加速する理由を徹底解説!Java初心者でも分かるクラウドネイティブ
No.7
Java&Spring記事人気No7
Micronaut
MicronautのAOPが高速な理由とは?コンパイル時AOPの仕組みを初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Micronaut
Micronautのアプリケーション起動が速い理由を初心者向けに解説