最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring在代碼中獲取bean的幾種方式詳解

 更新時間:2019年08月30日 08:19:16   作者:Mr.Aaron  
這篇文章主要介紹了Spring在代碼中獲取bean的幾種方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

方法如下

  • 方法一:通過讀取XML文件反射生成對象
  • 方法二:通過Spring提供的utils類獲取ApplicationContext對象
  • 方法三:繼承自抽象類ApplicationObjectSupport
  • 方法四:繼承自抽象類WebApplicationObjectSupport
  • 方法五:實現(xiàn)接口ApplicationContextAware
  • 方法六:通過Spring提供的ContextLoader

獲取spring中bean的方式總結(jié):

方法一:通過讀取XML文件反射生成對象

ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("userService");//比如:<bean id="userService" class="com.cloud.service.impl.UserServiceImpl"></bean>

說明:這樣的方式適用于採用Spring框架的獨立應(yīng)用程序,須要程序通過配置文件手工初始化Spring的情況。

方法二:通過Spring提供的工具類獲取ApplicationContext對象

ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ac1.getBean("beanId");
ac2.getBean("beanId");

說明:這樣的方式適合于Spring框架的B/S系統(tǒng),通過ServletContext對象獲取ApplicationContext對象。然后在通過它獲取須要的類實例。上面兩個工具方式的差別是,前者在獲取失敗時拋出異常。后者返回null。

方法三:繼承自抽象類ApplicationObjectSupport

說明:抽象類ApplicationObjectSupport提供getApplicationContext()方法。能夠方便的獲取ApplicationContext。

Spring初始化時。會通過該抽象類的setApplicationContext(ApplicationContext context)方法將ApplicationContext 對象注入。

方法四:繼承自抽象類WebApplicationObjectSupport

說明:類似上面方法。調(diào)用getWebApplicationContext()獲取WebApplicationContext

方法五:實現(xiàn)接口ApplicationContextAware

說明:實現(xiàn)該接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 對象。Spring初始化時,會通過該方法將ApplicationContext對象注入。

下面是實現(xiàn)ApplicationContextAware接口方式的代碼,前面兩種方法類似:

public class SpringContextUtil implements ApplicationContextAware { 
 
  // Spring應(yīng)用上下文環(huán)境 
  private static ApplicationContext applicationContext; 
 
  /** 
   * 實現(xiàn)ApplicationContextAware接口的回調(diào)方法。設(shè)置上下文環(huán)境 
   * 
   * @param applicationContext 
   */ 
  public void setApplicationContext(ApplicationContext applicationContext) { 
    SpringContextUtil.applicationContext = applicationContext; 
  } 
 
  /** 
   * @return ApplicationContext 
   */ 
  public static ApplicationContext getApplicationContext() { 
    return applicationContext; 
  }  
  /** 
   * 獲取對象 
   * 
   * @param name 
   * @return Object
   * @throws BeansException 
   */ 
  public static Object getBean(String name) throws BeansException { 
    return applicationContext.getBean(name); 
  } 
}

盡管,spring提供的后三種方法能夠?qū)嵢缃衿胀ǖ念愔欣^承或?qū)崿F(xiàn)對應(yīng)的類或接口來獲取spring 的ApplicationContext對象,可是在使用是一定要注意實現(xiàn)了這些類或接口的普通java類一定要在Spring 的配置文件applicationContext.xml文件里進行配置。否則獲取的ApplicationContext對象將為null。

方法六:通過Spring提供的ContextLoader

WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
wac.getBean(beanID);

最后提供一種不依賴于servlet,不須要注入的方式。可是須要注意一點,在server啟動時。Spring容器初始化時,不能通過下面方法獲取Spring 容器,細節(jié)能夠查看spring源代碼org.springframework.web.context.ContextLoader。

JUNIT測試時ContextLoader.getCurrentWebApplicationContext()=NULL

在JUNIT測試方法中加入以下代碼,正式環(huán)境不用

MockServletContext sc = new MockServletContext("");
sc.addInitParameter(ContextLoader.CONFIG_LOCATION_PARAM, "/applicationContext.xml");
ServletContextListener listener = new ContextLoaderListener();
ServletContextEvent event = new ServletContextEvent(sc);
listener.contextInitialized(event);

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Spring中bean實例化的三種方式

    詳解Spring中bean實例化的三種方式

    本篇文章主要介紹了詳解Spring中bean實例化的三種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • JAVA中單元測試的常用方式(小結(jié))

    JAVA中單元測試的常用方式(小結(jié))

    這篇文章主要介紹了JAVA中單元測試的常用方式(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 基于springboot i18n國際化后臺多種語言設(shè)置的方式

    基于springboot i18n國際化后臺多種語言設(shè)置的方式

    這篇文章主要介紹了基于springboot i18n國際化后臺多種語言設(shè)置的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java工程編碼格式由GBK轉(zhuǎn)化成utf-8的具體實現(xiàn)

    Java工程編碼格式由GBK轉(zhuǎn)化成utf-8的具體實現(xiàn)

    在寫項目的過程中我發(fā)現(xiàn)有的地方編碼格式被設(shè)置成了 gbk 如果用eclipse等工具直接改回utf-8編碼格式則會出現(xiàn)亂碼,所以本文給大家介紹了Java工程編碼格式由GBK轉(zhuǎn)化成utf-8的具體實現(xiàn),感興趣的朋友可以參考下
    2024-05-05
  • java中struts 框架的實現(xiàn)

    java中struts 框架的實現(xiàn)

    本文給大家介紹的是java中struts 框架的實現(xiàn),有需要的小伙伴可以參考下。
    2015-06-06
  • IntelliJ IDEA自定義代碼提示模板Live Templates的圖文教程

    IntelliJ IDEA自定義代碼提示模板Live Templates的圖文教程

    這篇文章主要介紹了IntelliJ IDEA自定義代碼提示模板Live Templates,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 詳解Java設(shè)計模式編程中命令模式的項目結(jié)構(gòu)實現(xiàn)

    詳解Java設(shè)計模式編程中命令模式的項目結(jié)構(gòu)實現(xiàn)

    這篇文章主要介紹了Java設(shè)計模式編程中命令模式的項目結(jié)構(gòu)實現(xiàn),命令模式將請求與執(zhí)行分離,可以多個命令接口的實現(xiàn)類,隱藏真實的被調(diào)用方,需要的朋友可以參考下
    2016-04-04
  • java中int值直接賦值給char類型的方法詳解

    java中int值直接賦值給char類型的方法詳解

    這篇文章主要給大家介紹了關(guān)于java中int值直接賦值給char類型的相關(guān)資料,文中通過代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-12-12
  • SpringCloud2020整合Nacos-Bootstrap配置不生效的解決

    SpringCloud2020整合Nacos-Bootstrap配置不生效的解決

    這篇文章主要介紹了SpringCloud2020整合Nacos-Bootstrap配置不生效的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • idea一鍵部署SpringBoot項目jar包到服務(wù)器的實現(xiàn)

    idea一鍵部署SpringBoot項目jar包到服務(wù)器的實現(xiàn)

    我們在開發(fā)環(huán)境部署項目一般通過idea將項目打包成jar包,然后連接linux服務(wù)器,將jar手動上傳到服務(wù)中,本文就來詳細的介紹一下步驟,感興趣的可以了解一下
    2023-12-12

最新評論

峨眉山市| 乌审旗| 南汇区| 武平县| 临沧市| 闵行区| 新兴县| 内黄县| 泾阳县| 拜泉县| 葵青区| 康平县| 金坛市| 临沂市| 荣昌县| 庆城县| 南郑县| 前郭尔| 盐山县| 磐石市| 西丰县| 克山县| 贞丰县| 玛纳斯县| 双辽市| 芒康县| 沙雅县| 正宁县| 乐陵市| 无为县| 屯留县| 松桃| 长白| 安庆市| 舟山市| 吕梁市| 宜州市| 新郑市| 嘉兴市| 辉县市| 全州县|