JAvaはspringのbeanを得る


方法1:初期化時にApplicationContextオブジェクトを保存する
コード:ApplicationContext ac=n e w E l e SystemXmlApplicationContex(「アプリケーションContext.xml」)    ac.getBean("beanId");     説明:    この方法はSpringフレームワークを採用した独立したアプリケーションに適用され、プログラムがプロファイルを通じてSpringを手動で初期化する必要がある場合に適用されます.  方法2:Springが提供するツールクラスから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システムに適しており、サーブレットContextオブジェクトを介してApplicationContextオブジェクトを取得し、必要なクラスインスタンスを取得する.上記の2つのツール方式の違いは,前者が取得に失敗したときに異常を投げ出し,後者がnullを返すことである.
内 servletContext sc 具体的に に代わる servlet.getServiceletContext()または this.getServletContext() または request.getSession().getServletContext();
またspringは注入されたオブジェクトがサーブレットContextに置かれているため、WebApplicationContextをサーブレットContextから直接取り出すことができる オブジェクト:
WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);            メソッド3:抽象クラスからのアプリケーションオーバーシュートの継承   説明:     抽象クラスApplicationObjectSupportはgetApplicationContext()メソッドを提供し、ApplicationContextを簡単に入手できます.Springが初期化されると、この抽象クラスのsetApplicationContext(ApplicationContext context)メソッドでApplicationContextが オブジェクト注入.
 
方法4:抽象クラスから引き継ぐWebApplicationObjectSupport   説明:         上記の方法と同様に、getWebApplicationContext()を呼び出してWebApplicationContextを取得します.  方法5:インタフェースアプリケーション制御extAwareを実現する  説明:     このインタフェースのsetApplicationContext(ApplicationContext context)メソッドを実装し、ApplicationContextを保存します. オブジェクト.Springが初期化されると、この方法でApplicationContextが オブジェクト注入.以上の方法は異なる場合に適しており、状況に応じて適切な方法を選択してください.ここで注目すべきは、システムで上記の方法を用いたクラスは、実際にSpringフレームワークと密接に結合されていることである.これらのクラスは、Springフレームワーク上で動作していることを知っているため、システムでは、このようなアプリケーションをできるだけ減らし、システムが現在の動作環境からできるだけ独立し、DI方式で必要なサービスプロバイダを得るようにしなければならない.
方法6:
ソースコードによる検出
public class ContextLoaderListener extends ContextLoader implements ServletContextListener 

ContextLoaderで
public static WebApplicationContext getCurrentWebApplicationContext() {  
        ClassLoader ccl = Thread.currentThread().getContextClassLoader();  
        if (ccl != null) {  
            WebApplicationContext ccpt = currentContextPerThread.get(ccl);  
            if (ccpt != null) {  
                return ccpt;  
            }  
        }  
        return currentContext;  
    }  
WebApplicationContext w= ContextLoader.getCurrentWebApplicationContext();
		//  web       
		//ApplicationContext w=new ClassPathXmlApplicationContext("beans.xml");
		IQZServices iqzs=w.getBean("qzService",IQZServices.class);
		iqzs.writeAllEmpExcel();

本文の抜粋:http://blog.csdn.net/huang798807481/article/details/7739072