06.ApplicationContextのgetBeanメソッド

06.ApplicationContextのgetBeanメソッド

導入

この記事では、getBean メソッドを通じて Spring コンテナ ApplicationContext のインスタンスを取得するいくつかの方法を詳しく紹介します。

1.1 手法の概要

メソッド定義 戻り値とパラメータ
オブジェクト getBean (文字列 beanName) beanName に基づいてコンテナから Bean インスタンスを取得します。コンテナ内の Bean は一意である必要があります。戻り値は Object であり、強制する必要があります。
T getBean (クラス型) Class型に応じてコンテナからBeanインスタンスを取得します。コンテナ内のBean型は一意である必要があります。戻り値はClass型のインスタンスです。強制変換は必要ありません。
T getBean (文字列 beanName,クラス型) beanNameに従ってコンテナからBeanインスタンスを取得し、戻り値はClass型のインスタンスとなるため、強制転送は必要ありません。

1.2 コアコード

//根据beanName获取容器中的Bean实例,需要手动强转
UserService userService = (UserService) applicationContext.getBean("userService");
//根据Bean类型去容器中匹配对应的Bean实例,如存在多个匹配Bean则报错
UserService userService2 = applicationContext.getBean(UserService.class);
//根据beanName获取容器中的Bean实例,指定Bean的Type类型
UserService userService3 = applicationContext.getBean("userService", UserService.class);

1.3 デバッグと検証

Bean タイプに応じて、コンテナ内の対応する Bean インスタンスを照合します。一致してもエラーは報告されない

ここに画像の説明を挿入します

ここに画像の説明を挿入します
複数インスタンスの一致エラー:

ここに画像の説明を挿入します

ここに画像の説明を挿入します

Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.test.service.UserService' available: expected single matching bean but found 2: userService,userService2
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1262)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:494)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:349)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1172)
	at com.test.test.ApplicationContextTest.main(ApplicationContextTest.java:15)

おすすめ

転載: blog.csdn.net/ChennyWJS/article/details/132061125