【Spring Boot】Bean とは?初心者向けにやさしく解説

Java入門・実践
スポンサーリンク
スポンサーリンク

はじめに

Spring を学んでいると必ず出てくる言葉、Bean(ビーン)

「なんとなく聞いたことはあるけれど、説明しようとすると曖昧になる…」 そんな方も多いと思います。

この記事では、Bean を やさしく・実務で役立つ形 で整理します。 まずはコードを見て、そこから少しずつ理解していきましょう。

まずはコードを確認

Java
@Service
public class GreetingService {
    public String greet() {
        return "Hello!";
    }
}

この GreetingService クラスは、@Service が付いていることで
Spring によって Bean として管理されるオブジェクト になります。

コードのしくみを解説

Bean とは

一言でいうと、

Spring が管理してくれる“オブジェクト”のこと

です。

もう少し丁寧に言うと、

  • Spring が作って
  • Spring が保持して
  • Spring が必要な場所に渡してくれる

そんな“特別扱いされるオブジェクト”のことを Bean と呼びます。

Bean が生まれる条件

以下のいずれかで定義されたクラスは Bean になります。

  • @Component
  • @Service
  • @Repository
  • @Controller / @RestController
  • @Configuration
  • @Bean メソッドで返されたオブジェクト

これらはすべて IoCコンテナに登録され、 アプリケーション全体で使い回されます。

Bean と IoCコンテナの関係

Bean は IoCコンテナの中に置かれる“部品” のようなものです。

IoCコンテナが

  • Bean を作り
  • Bean を管理し
  • DI を通して必要な場所に渡す

という流れでアプリケーションが動いています。

あわせて知っておきたいポイント

Bean のスコープ

Bean には「どのくらいの期間生きるか」というスコープがあります。

代表的なものは以下の通りです。

  • Singleton(デフォルト) アプリ全体で1つだけ作られる
  • Prototype 呼ばれるたびに新しく作られる
  • Request / Session Webアプリ向けのスコープ

特に Singleton は実務でよく使われます。

Bean の名前

Bean には名前が付きます。
クラス名をキャメルケースにしたものがデフォルトです。

例: GreetingServicegreetingService

Bean のライフサイクル

Bean は

  • 作成
  • 初期化
  • 破棄
    まで Spring が面倒を見てくれます。

使うときに気をつけたいこと

new で作ると Bean にならない

自分で new すると、IoCコンテナの管理外になります。
DI が効かなくなるので注意が必要です。

コンポーネントスキャンの範囲

Bean が見つからない場合、
パッケージ構成が原因のことがあります。

同じ型の Bean が複数あると注入に失敗する

NoUniqueBeanDefinitionException が出ることがあります。
@Qualifier で指定するなどの対処が必要です。

まとめ

Bean は Spring のアプリケーションを構成する“部品”のような存在です。
IoCコンテナに登録され、DI を通して必要な場所に渡されます。

難しく聞こえますが、
「Spring が管理してくれる特別なオブジェクト」
と理解できれば十分です。


decopon
decopon

Bean は Spring の基礎ですが、最初は少し抽象的に感じるかもしれません。
コードを書きながら触れていくと、自然と理解が深まっていきます。
あなたの開発が、今日より少しだけ楽になりますように。

moco
moco

Bean って、Spring さんが大事に育ててくれる“ちいさな部品”なんだね。

コメント

タイトルとURLをコピーしました