[SSMは大きな工場に直接ヒットします]第2章:Spring構成ファイルの詳細な説明

コンテンツ

3.Spring構成ファイル

3.1Beanタグの基本構成

3.2Beanタグスコープの構成

3.3Beanのライフサイクル構成

3.4Beanインスタンス化の3つの方法

3.5Bean依存性注入の開始

3.6Beanの依存性注入分析

3.7Beanの依存性注入の概念

3.8Beanの依存性注入方法

3.9Bean依存性注入のデータ型

3.10その他の設定ファイルの紹介(モジュールによる開発)

知識ポイント


3.Spring構成ファイル

3.1Beanタグの基本構成

構成オブジェクトはSpringによって作成されます。

デフォルトでは、クラス内の引数なしのコンストラクターを呼び出します。引数なしのコンストラクターがない場合は、正常に作成できません。

基本的なプロパティ:

  1. id:Springコンテナ内のBeanインスタンスの一意の識別子
  2. クラス:Beanの完全修飾名

3.2Beanタグスコープの構成

スコープ:オブジェクトのスコープを指し、値は次のとおりです:

範囲

説明する

シングルトン

デフォルト、シングルトン

プロトタイプ

多例的

リクエスト

WEBプロジェクトでは、SpringはBeanオブジェクトを作成し、そのオブジェクトをリクエストフィールドに格納します

セッション

WEBプロジェクトでは、SpringはBeanオブジェクトを作成し、そのオブジェクトをセッションドメインに保存します

グローバルセッション

WEBプロジェクトでは、ポートレット環境に適用されます。ポートレット環境がない場合、globalSessionはセッションと同等です。

1)スコープの値がシングルトンの場合

Beanのインスタンス化の数:1

Beanのインスタンス化のタイミング:Springコアファイルがロードされたら、構成されたBeanインスタンスをインスタンス化します

Beanのライフサイクル:

  1. オブジェクトの作成:アプリケーションが読み込まれ、コンテナが作成されると、オブジェクトが作成されます
  2. オブジェクトの実行:コンテナが存在する限り、オブジェクトは生きています
  3. オブジェクトの破棄:アプリケーションがアンインストールされ、コンテナーが破棄されると、オブジェクトが破棄されます

2)スコープの値がプロトタイプの場合

Beanのインスタンス化の数:複数

Beanのインスタンス化のタイミング:getBean()メソッドが呼び出されたときにBeanがインスタンス化されます

  1. オブジェクトの作成:オブジェクトを使用する場合は、新しいオブジェクトインスタンスを作成します
  2. オブジェクトの実行:オブジェクトが使用されている限り、オブジェクトは存続します
  3. オブジェクトの破棄:オブジェクトが長期間使用されない場合、Javaのガベージコレクターによって再利用されます

3.3Beanのライフサイクル構成

  1. init-method:クラスの初期化メソッドの名前を指定します
  2. destroy-method:指定されたクラスのdestroyメソッドの名前

3.4Beanインスタンス化の3つの方法

1 )引数なしのコンストラクターを使用してインスタンス化します

デフォルトの引数なしコンストラクターに従ってクラスオブジェクトを作成します。Beanに引数なしデフォルトのコンストラクターがない場合、作成は失敗します。

<bean id="userDao" class="com.project.dao.impl.UserDaoImpl"/>

2)ファクトリ静的メソッドのインスタンス化

ファクトリの静的メソッドはBeanインスタンスを返します

ファクトリクラスを作成する

public class StaticFactoryBean {

public static UserDao createUserDao(){

return new UserDaoImpl();

}

}
<bean id="userDao" class="com.project.factory.StaticFactoryBean" 
factory-method="createUserDao" />

3 ファクトリは、ファクトリの非静的メソッドをインスタンス化してBeanインスタンスを返します

public class DynamicFactoryBean { 
    public UserDao createUserDao(){ 
        return new UserDaoImpl();
    }
}
<bean id="factoryBean" class="com.project.factory.DynamicFactoryBean"/>
<bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>

3.5Bean依存性注入の開始

①UserServiceを作成します。UserServiceは内部でUserDaoのsave()メソッドを呼び出します

public class UserServiceImpl implements UserService {

@Override public void save() {

ApplicationContext applicationContext = new

ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao) applicationContext.getBean("userDao");

userDao.save();

}

}

②SpringにUserServiceImplを作成する権利を与える

<bean id="userService" class="com.project.service.impl.UserServiceImpl"/>

③SpringコンテナからUserServiceを取得して操作する

<bean id="userService" class="com.project.service.impl.UserServiceImpl"/>

3.6Beanの依存性注入分析

現在、 UserServiceインスタンスとUserDaoインスタンスの両方がSpringコンテナに存在します。現在の方法では、コンテナの外部でUserServiceインスタンスとUserDaoインスタンスを取得し、それらをプログラムで結合します。

UserServiceとUserDaoはどちらもSpringコンテナーにあり、最終的なプログラムはUserServiceを直接使用するため、SpringコンテナーのUserService内にUserDaoを設定できます。

3.7Beanの依存性注入の概念

依存性注入(依存性注入):これは、SpringフレームワークのコアIOCの具体的な実装です。

プログラムを書くとき、制御の反転によってオブジェクトの作成はSpringに渡されますが、コードに依存関係を持たせることは不可能です。

IOCデカップリングは、依存関係を減らすだけで、それらを排除するわけではありません。例:ビジネスレイヤーは引き続き永続レイヤーのメソッドを呼び出します。

ビジネス層と永続層の間の依存関係は、Springを使用した後もSpringによって維持されます。

簡単に言えば、フレームワークが永続層オブジェクトを自分で取得するのではなく、ビジネス層に渡すのを待つことです。

3.8Beanの依存性注入方法

UserDaoをUserServiceに注入する方法は?

1.工法

2.setメソッド

1)セットメソッド注入

UserServiceImplにsetUserDaoメソッドを追加します

public class UserServiceImpl implements UserService { private UserDao userDao;

public void setUserDao(UserDao userDao) {

this.userDao = userDao;

}

@Override

public void save() {

userDao.save();

}

}

インジェクションのsetメソッドを呼び出すようにSpringコンテナを構成します

<bean id="userDao" class="com.project.dao.impl.UserDaoImpl"/>

<bean id="userService" class="com.project.service.impl.UserServiceImpl">

<property name="userDao" ref="userDao"/>

</bean>

P名前空間インジェクションの本質もsetメソッドインジェクションですが、主に構成ファイルに反映される上記のsetメソッドインジェクションよりも便利です。まず、P名前空間を導入する必要があります。

xmlns:p="http://www.springframework.org/schema/p"

第二に、注入方法を変更する必要があります

<bean id="userService" class="com.project.service.impl.UserServiceImpl" p:userDaoref="userDao"/>

2)コンストラクタインジェクションはパラメータ化された構造を作成します

public class UserServiceImpl implements UserService {

@Override public void save() {

ApplicationContext applicationContext = new

ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao) applicationContext.getBean("userDao");

userDao.save();

}

}

パラメータ化された構造を呼び出すときに注入するようにSpringコンテナを構成します

<bean id="userDao" class="com.project.dao.impl.UserDaoImpl"/>

<bean id="userService" class="com.project.service.impl.UserServiceImpl">

<constructor-arg name="userDao" ref="userDao"></constructor-arg>

</bean>

3.9Bean依存性注入のデータ型

上記の操作はすべて注入された参照Beanです。オブジェクトの参照を注入できます。一般的なデータ型、コレクションなどをコンテナに注入できます。

データを注入するための3つのデータ型

  1. 一般的なデータ型
  2. 参照データ型コレクションデータ型

参照データ型はここでは繰り返されません。前の操作はすべてUserDaoオブジェクトの参照に挿入されます。以下では、一般的なデータ型と収集データ型の挿入を示す例として、setメソッドの挿入を取り上げます。

1)一般的なデータ型の注入

public class UserDaoImpl implements UserDao { private String company; private int age;

public void setCompany(String company) {

this.company = company;

}

public void setAge(int age) {

this.age = age;

} public void save() {

System.out.println(company+"==="+age);

System.out.println("UserDao save method running....");

}

}
<bean id="userDao" class="com.project.dao.impl.UserDaoImpl">

<property name="company" value="小明"></property>

<property name="age" value="15"></property>

</bean>

2)コレクションデータ型の挿入( List <String> )

public class UserDaoImpl implements UserDao { private List<String> strList;

public void setStrList(List<String> strList) {

this.strList = strList;

}

public void save() {

System.out.println(strList);

System.out.println("UserDao save method running....");

}

}

<bean id="userDao" class="com.project.dao.impl.UserDaoImpl">

<property name="strList">

<list>

<value>aaa</value> <value>bbb</value>

<value>ccc</value>

</list>

</property>

</bean>

4)コレクションデータ型の挿入( Map <String、User> )

public class UserDaoImpl implements UserDao { private Map<String,User> userMap;

public void setUserMap(Map<String, User> userMap) {

this.userMap = userMap;

}

public void save() {

System.out.println(userMap);

System.out.println("UserDao save method running....");

}

}

<bean id="u1" class="com.project.domain.User"/> <bean id="u2" class="com.project.domain.User"/>

<bean id="userDao" class="com.project.dao.impl.UserDaoImpl">

<property name="userMap">

<map>

<entry key="user1" value-ref="u1"/>

<entry key="user2" value-ref="u2"/>

</map>

</property>

</bean>

3.10その他の設定ファイルの紹介(モジュールによる開発)

実際の開発では、Springには多くの構成コンテンツが含まれているため、Spring構成は非常に複雑でかさばります。したがって、構成の一部を他の構成ファイルに分解し、Springメイン構成ファイルをインポートタグを介してロードできます。

<import resource="applicationContext-xxx.xml"/>

知識ポイント

スプリングキー構成

<bean>タグ

id属性:コンテナ内のBeanインスタンスの一意の識別子。繰り返しは許可されません。クラス属性:インスタンス化されるBeanの完全修飾名スコープ属性:一般的に使用されるBeanのスコープは、シングルトン(デフォルト)とプロトタイプです。

<property>タグ:プロパティインジェクション名プロパティ:プロパティ名値プロパティ:注入された通常のプロパティ値refプロパティ:注入されたオブジェクト参照値

<リスト>タグ

<マップ>タグ

<プロパティ>タグ

<constructor-arg>タグ

<import>タグ:他のSpringサブファイルをインポートします

おすすめ

転載: blog.csdn.net/qq_52360069/article/details/123555303