亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java 如何從spring容器中獲取注入的bean對象

 更新時間:2020年11月02日 11:40:06   作者:Marydon  
這篇文章主要介紹了Java 如何從spring容器中獲取注入的bean對象,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

1.使用場景

  控制層調用業(yè)務層時,控制層需要拿到業(yè)務層在spring容器中注入的對象

2.代碼實現

import org.apache.struts2.ServletActionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
 * 從spring容器中獲取注入的bean對象
 * @explain 必須獲取到ServletContext對象,Controller層以struts2為例
 * @author Marydon
 * @creationTime 2018年6月1日上午10:06:49
 * @version 1.0
 * @since
 * @email marydon20170307@163.com
 */
public final class BeansUtils {
  private static final Logger logger = LoggerFactory.getLogger(BeansUtils.class);
  private static ApplicationContext ctx;
  private static WebApplicationContext webCtx;
  // 靜態(tài)代碼塊:加載該類時會被運行的代碼
  static {

    if (ctx == null) {
      try {
        // 入參需要拿到ServletContext對象
        webCtx = WebApplicationContextUtils
            .getRequiredWebApplicationContext(ServletActionContext.getServletContext());
        logger.info("從web.xml容器中加載spring-config.xml");
      } catch (Exception e) {
        logger.info("直接加載spring-config.xml");
      }
      if (webCtx == null)
        // 你可以自定義spring配置文件的文件名
        ctx = new ClassPathXmlApplicationContext("spring-config.xml");
    }
  }

  /**
   * 通過beanID獲取bean實例
   * 
   * @param beanID
   *      bean的代碼
   * @return 返回對應的實例
   * @throws RuntimeException
   *       bean沒有定義
   */
  public static Object getBeanInstance(String beanID) throws RuntimeException {
    logger.info("在spring容器中獲取Bean對象 ID=" + beanID);
    Object obj;
    if (BeansUtils.ctx == null) {
      if (BeansUtils.webCtx.containsBeanDefinition(beanID)) {
        obj = BeansUtils.webCtx.getBean(beanID);
      } else {
        logger.info("beanID=" + beanID + "沒有定義");
        throw new RuntimeException(beanID + "沒有定義!");
      }
    } else {
      if (BeansUtils.ctx.containsBeanDefinition(beanID)) {
        obj = BeansUtils.ctx.getBean(beanID);
      } else {
        logger.info("beanID=" + beanID + "沒有定義");
        throw new RuntimeException(beanID + "沒有定義!");
      }
    }
    return obj;
  }
}

以上就是Java 如何從spring容器中獲取注入的bean對象的詳細內容,更多關于Java獲取bean對象的資料請關注腳本之家其它相關文章!

相關文章

  • Java String對象使用方法詳解

    Java String對象使用方法詳解

    這篇文章主要介紹了Java String對象使用方法詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • 解析SpringBoot?搭建基于?MinIO?的高性能存儲服務的問題

    解析SpringBoot?搭建基于?MinIO?的高性能存儲服務的問題

    Minio是Apache?License?v2.0下發(fā)布的對象存儲服務器,使用MinIO構建用于機器學習,分析和應用程序數據工作負載的高性能基礎架構。這篇文章主要介紹了SpringBoot?搭建基于?MinIO?的高性能存儲服務,需要的朋友可以參考下
    2022-03-03
  • Spring?Boot深入排查?java.lang.ArrayStoreException異常

    Spring?Boot深入排查?java.lang.ArrayStoreException異常

    這篇文章介紹了Spring?Boot深入排查?java.lang.ArrayStoreException異常,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • SpringBoot整合多個Mq服務做法詳解

    SpringBoot整合多個Mq服務做法詳解

    SpringBoot整合rabbitmq很容易,但是整合的目的是為了使用,那要使用rabbitmq就要對其有一定的了解,不然容易整成一團漿糊。因為說到底,SpringBoot只是在封裝rabbitmq的API,讓其更容易使用而已,廢話不多說,讓我們一起整它
    2023-02-02
  • Java的LinkedHashMap的實現原理詳解

    Java的LinkedHashMap的實現原理詳解

    這篇文章主要介紹了Java的LinkedHashMap的實現原理詳解,???LinkedHashMap是Map接口的哈希表和鏈接列表實現,具有可預知的迭代順序,此實現提供所有可選的映射操作,并允許使用null值和null鍵,此類不保證映射的順序,特別是它不保證該順序恒久不變,需要的朋友可以參考下
    2023-09-09
  • java實現的根據概率隨機中獎測試類

    java實現的根據概率隨機中獎測試類

    這篇文章主要介紹了java實現的根據概率隨機中獎測試類,結合完整實例形式詳細分析了java隨機數實現概率運算相關操作技巧,需要的朋友可以參考下
    2019-09-09
  • PowerDesigner連接數據庫的實例詳解

    PowerDesigner連接數據庫的實例詳解

    這篇文章主要介紹了PowerDesigner連接數據庫的實例詳解的相關資料,如有疑問請留言或者到本站社區(qū)交流討論,需要的朋友可以參考下
    2017-10-10
  • Spring事務處理流程和原理詳解

    Spring事務處理流程和原理詳解

    這篇文章主要介紹了Spring事務處理流程和原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • java異常機制分析

    java異常機制分析

    這篇文章主要介紹了java異常機制,包括異常機制的捕獲、拋出及常見的異常機制總結,需要的朋友可以參考下
    2014-09-09
  • springcloud?gateway高級功能之集成apollo后動態(tài)刷新路由方式

    springcloud?gateway高級功能之集成apollo后動態(tài)刷新路由方式

    這篇文章主要介紹了springcloud?gateway高級功能之集成apollo后動態(tài)刷新路由方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論