Springフレームワークの基本概念とコンテナ管理

Spring IoC コンテナの概要

Spring のコントロールインバージョン(IoC)は、依存性注入(DI)とも呼ばれ、オブジェクト間の関係を明示的にコード化する代わりに、設定ファイルや注釈を使用して定義します。このプロセスにより、アプリケーションの柔軟性と保守性が向上します。

BeanFactory と ApplicationContext

`org.springframework.beans` と `org.springframework.context` パッケージは Spring IoC コンテナの基盤です。`BeanFactory` インターフェースは、オブジェクトの高度な構成メカニズムを提供し、`ApplicationContext` はその拡張版として、国際化サポート、イベント通知などの機能を追加しています。

<bean id="example" class="com.example.ExampleClass">
    <property name="attributeName" value="value"/>
</bean>

コンテナの初期化

以下のコードは、XML 設定ファイルに基づいてコンテナを初期化する方法を示しています。

ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");

Bean 定義とインスタンス化

Spring IoC コンテナでは、アプリケーションの主要部分である Bean を管理します。これらの Bean は XML、Java アノテーション、または Java コードを通じて定義されます。

XML ベースの設定

XML 形式で Bean を定義する場合、以下のように記述します。

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="service" class="com.example.ServiceImpl">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="dataSource" class="com.example.DataSourceImpl"/>
</beans>

依存性注入の種類

コンストラクタベース DI

コンストラクタベースの DI は、クラスのコンストラクタを使って依存性を注入します。

public class Service {
    private final DataSource dataSource;

    public Service(DataSource dataSource) {
        this.dataSource = dataSource;
    }
}

Setter ベース DI

Setter ベースの DI は、setter メソッドを使って依存性を注入します。

public class Service {
    private DataSource dataSource;

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
}

Bean の命名と別名

各 Bean には一意の ID が割り当てられますが、必要に応じて複数の別名を持つこともできます。

<bean id="mainService" class="com.example.MainServiceImpl" name="altServiceName, anotherAlias"/>

依存性解決プロセス

Spring コンテナは Bean 間の依存関係を自動的に解決し、必要な順序で Bean を生成します。これは、アプリケーションの複雑さに関わらず、効率的な依存性管理を可能にします。

属性 説明
class Bean の実装クラス
name Bean の識別子
scope Bean のスコープ

Bean のライフサイクル

Bean のライフサイクルは、初期化から破棄までのプロセスを指します。Spring は、Bean の作成時に初期化メソッドを呼び出し、破棄時にクリーンアップメソッドを呼び出すことができます。

public class ExampleBean implements InitializingBean, DisposableBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        // 初期化処理
    }

    @Override
    public void destroy() throws Exception {
        // 破棄処理
    }
}

タグ: Spring IoC BeanFactory ApplicationContext DependencyInjection

7月17日 01:10 投稿