LoginSignup
2
0

More than 1 year has passed since last update.

[Spring Boot] Bean scopeとBean Life Cycle

Last updated at Posted at 2021-01-18

Bean scope

Bean scope
Springで別途の設定をしない場合、default bean scopeはsingletonで構成されます。

singleton : spring default bean scope
prototype:アプリケーションリクエスト時に(getBean()メソッドが呼び出されるたびに)スプリングが新しいインスタンスを生成します。
request:HTTP リクエストごとにインスタンス化され、リクエストが終わると消滅します。
session:HTTP セッションごとにインスタンス化され、セッションが終了すると消滅します。
global session:ポートレート基盤のウェブアプリケーション用途で、全域セッションスコープが空のようなスプリングMVCを使用したポータルアプリケーション内のすべてのポートレートの間で共有できます。
thread:新しいスレッドから要請すると、新しいbeanインスタンスを作成します。 同じスレッドの要請には常に同じインスタンスが返されます。
custom : org.pringframework.beans.factory.config.Scopeを実装し、そしてカスタムスコープをスプリングの設定に登録することによって使用します。

※ request、session、global sessionのスコープは、一般のspringアプリケーションではなく、Spring MVC Applicationでのみ使用される用途です。

空きスコープを指定する方法は、XMLを利用した方法と、アノテーションを利用した方法があります。

XML

<bean id="memberBean" class="com.java.Member" scope="singleton"/>

Annotation

package com.java.pojo;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

@Service("memberBean")
@Scope("singletone")
public class Member {
}

Bean Life Cycle

Bean Life Cycle
空きライフサイクルは基本的に生成、依存設定、初期化、消滅の段階を経ます。 でも、どんなコンテナを使うかによって違います。

Bean Factoryは、基本的な依存性注入をサポートする最も簡単な形態のコンテナで、getBean()メソッドが呼び出されるまで空の生成を先送りします。 Application Contextは、BeanFactoryを継承した形態でBeanFactoryのすべての機能を持ち、追加的な機能を持つコンテナです。 Application contextはcontextが始まる前にすべての空きを作成してロードして、好きな時期にいつでもコピーして使えます。

Initialize & Destory メソッド
Bean Initializeメソッドは、Bean Objectが作成されてDIを終えた後に実行されるメソッドです。 一般的にObjectの初期化作業が必要な場合は生成者に処理しますが、DIによってBeanが注入された後に初期化後に初期化作業がある場合は、初期化メソッドを利用して初期化を進めます。

@PostConstruct

@Slf4j
@Component
public class SimpleBean {

    @PostConstruct
    public void postConstruct() {
        log.info("postConstruct");
    }
}

@PreDestroy

@Slf4j
@Component
public class SimpleBean {

    @PreDestroy
    public void preDestroy() {
        log.info("preDestroy");
    }
}
2
0
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
2
0