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

Micronautの@Singletonとは?スコープと使い方を初心者でも理解できる形で解説

Micronautの@Singletonとは?スコープと使い方を初心者でも理解できる形で解説
Micronautの@Singletonとは?スコープと使い方を初心者でも理解できる形で解説

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

生徒

「Micronautのコードを見ていると、@Singletonってよく出てくるんですが、何をしているんですか?」

先生

「@Singletonは、そのクラスが一つのインスタンスとして管理されることをMicronautに伝えるアノテーションです」

生徒

「一つだけ作られる、という意味ですか?」

先生

「そうです。アプリケーション全体で一つだけ生成され、それを使い回します」

生徒

「どういう場面で使うのか、もう少し詳しく知りたいです」

先生

「では、DIとスコープの考え方から順番に説明していきましょう」

1. MicronautにおけるDIとスコープの考え方

1. MicronautにおけるDIとスコープの考え方
1. MicronautにおけるDIとスコープの考え方

Micronautでは、依存性注入を使ってクラス同士のつながりを管理します。 その中で重要になるのがスコープという考え方です。 スコープとは、オブジェクトがどの範囲で、どのくらいの期間使われるかを表します。

例えば、毎回新しく作られるオブジェクトもあれば、アプリケーション全体で一つだけ使われるオブジェクトもあります。 この違いをMicronautに伝えるために、アノテーションを使ってスコープを指定します。 @Singletonは、その中でも最も基本的でよく使われるスコープです。

2. @Singletonとは何か

2. @Singletonとは何か
2. @Singletonとは何か

@Singletonは、そのクラスのインスタンスを一つだけ生成し、DIコンテナが管理することを示します。 アプリケーション起動時、または初めて使われたタイミングで生成され、その後は同じインスタンスが再利用されます。

サービスクラスや共通処理を行うクラスは、毎回新しく作る必要がありません。 そのため、@Singletonを付けることで、メモリの無駄を減らし、処理の流れも分かりやすくなります。 Micronautの公式ドキュメントでも、基本は@Singletonを使う設計が推奨されています。

3. @Singletonの基本的な使い方

3. @Singletonの基本的な使い方
3. @Singletonの基本的な使い方

@Singletonはクラスに付与するだけで利用できます。 特別な設定は不要で、Micronautが自動的にBeanとして登録します。 Java初心者でも扱いやすいのが特徴です。


import jakarta.inject.Singleton;

@Singleton
public class HelloService {

    public String message() {
        return "こんにちはMicronaut";
    }
}

このクラスは、MicronautのDIコンテナによって一つだけ生成されます。 他のクラスから注入されても、常に同じインスタンスが使われます。


import jakarta.inject.Singleton;

@Singleton
public class HelloController {

    private final HelloService helloService;

    public HelloController(HelloService helloService) {
        this.helloService = helloService;
    }

    public void execute() {
        System.out.println(helloService.message());
    }
}

このように、@Singleton同士を組み合わせることで、シンプルで見通しの良い構成になります。 依存関係も明確になり、コードの理解がしやすくなります。

4. @Singletonが向いているクラス

4. @Singletonが向いているクラス
4. @Singletonが向いているクラス

@Singletonは、状態を持たない、または共有して問題ないクラスに向いています。 例えば、計算処理、共通ユーティリティ、ビジネスロジックを担当するサービスクラスなどです。

逆に、ユーザーごとに異なる状態を持つクラスには注意が必要です。 一つのインスタンスを使い回すため、状態を持たせると予期しない動作につながる可能性があります。 初心者のうちは、なるべく状態を持たない設計を意識すると安全です。

5. 他のスコープとの違いを意識する

5. 他のスコープとの違いを意識する
5. 他のスコープとの違いを意識する

Micronautには@Singleton以外にもスコープが存在します。 ただし、最初の学習段階では詳細を覚える必要はありません。 まずは、アプリケーション全体で使い回すものには@Singletonを付ける、という理解で十分です。

DIとスコープの考え方を理解すると、Micronautの設計が自然に見えてきます。 クラスの役割を意識しながら@Singletonを使うことで、読みやすく保守しやすいコードが書けるようになります。

6. @Singletonを使うメリット

6. @Singletonを使うメリット
6. @Singletonを使うメリット

@Singletonを使う最大のメリットは、設計がシンプルになることです。 インスタンス管理をMicronautに任せることで、開発者は処理の内容に集中できます。

また、テストや修正もしやすくなります。 DIと@Singletonを正しく使うことで、Micronautの軽量さと高速起動の恩恵を最大限に活かすことができます。 初心者のうちは、まず@Singletonを正しく使えるようになることが大きな一歩になります。

関連記事:
カテゴリの一覧へ
新着記事
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のセキュリティ基礎を初心者でもわかるように解説!
No.3
Java&Spring記事人気No3
Quarkus
QuarkusとMicronautとHelidonを徹底比較!軽量Javaフレームワークの違いを初心者向けに解説
No.4
Java&Spring記事人気No4
Quarkus
Quarkusでマイクロサービス開発が加速する理由を徹底解説!Java初心者でも分かるクラウドネイティブ
No.5
Java&Spring記事人気No5
Quarkus
Quarkusの開発環境構築で躓きやすいポイントを完全解説!初心者でも安心して始めるためのチェックガイド
No.6
Java&Spring記事人気No6
Micronaut
MicronautとSpring Bootの違いとは?アーキテクチャ比較で速さの秘密を理解する
No.7
Java&Spring記事人気No7
Java
Javaのboolean型の使い方を完全ガイド!真偽値と条件分岐の基本
No.8
Java&Spring記事人気No8
Micronaut
MicronautのAOPが高速な理由とは?コンパイル時AOPの仕組みを初心者向けに徹底解説