Springの一般的なJavaクラスがBeanを取得します

実装の概要

  1. 初期化中にApplicationContextオブジェクトを保存します
  2. Springが提供するツールクラスを介してApplicationContextオブジェクトを取得します
  3. 抽象クラスApplicationObjectSupportから継承されます
  4. 抽象クラスWebApplicationObjectSupportから継承されます
  5. インターフェースApplicationContextAwareを実装します

1.ApplicationContextオブジェクトを保存します

ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");

注:この方法は、Springフレームワークを使用する独立したアプリケーションに適しており、プログラムは構成ファイルを使用してSpringを手動で初期化する必要があります。

2.ApplicationContextオブジェクトを取得します

import org.springframework.web.context.support.WebApplicationContextUtils;
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ac1.getBean("beanId");
ac2.getBean("beanId");

注:
このメソッドは、Springフレームワークを使用するB / Sシステムに適しています。ApplicationContextオブジェクトはServletContextオブジェクトを介して取得され、次に必要なクラスインスタンスがそれを介して取得されます。

上記の2つのツールの違いは、前者は取得が失敗したときに例外をスローし、後者はnullを返すことです。

3.抽象クラスApplicationObjectSupportから継承されます

説明:抽象クラスApplicationObjectSupportは、ApplicationContextを簡単に取得できるgetApplicationContext()メソッドを提供します。
Springが初期化されると、ApplicationContextオブジェクトは、この抽象クラスのsetApplicationContext(ApplicationContext context)メソッドを介して注入されます。

4.抽象クラスWebApplicationObjectSupportから継承されます

説明:上記のメソッドと同様に、getWebApplicationContext()を呼び出してWebApplicationContextを取得します

5.インターフェースApplicationContextAwareを実装します

package com.itheima.hchat.util;
 
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
 
/**
 * @Description: 提供手动获取被spring管理的bean对象
 */
@Component
public class SpringUtil implements ApplicationContextAware {
    
    
	
	private static ApplicationContext applicationContext;
 
	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    
    
		if (SpringUtil.applicationContext == null) {
    
    
			SpringUtil.applicationContext = applicationContext;
		}
	}
 
	// 获取applicationContext
	public static ApplicationContext getApplicationContext() {
    
    
		return applicationContext;
	}
 
	// 通过name获取 Bean.
	public static Object getBean(String name) {
    
    
		return getApplicationContext().getBean(name);
	}
 
	// 通过class获取Bean.
	public static <T> T getBean(Class<T> clazz) {
    
    
		return getApplicationContext().getBean(clazz);
	}
 
	// 通过name,以及Clazz返回指定的Bean
	public static <T> T getBean(String name, Class<T> clazz) {
    
    
		return getApplicationContext().getBean(name, clazz);
	}
}

説明:このインターフェイスのsetApplicationContext(ApplicationContext context)メソッドを実装し、ApplicationContextオブジェクトを保存します。
Springが初期化されると、ApplicationContextオブジェクトがこのメソッドを介して注入されます。

おすすめ

転載: blog.csdn.net/Dkangel/article/details/110660834