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

Java類獲取Spring中bean的5種方式

 更新時(shí)間:2021年04月20日 11:57:16   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了Java類獲取Spring中bean的5種方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

獲取Spring中的bean有很多種方式,再次總結(jié)一下:

第一種:在初始化時(shí)保存ApplicationContext對(duì)象

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

說明:這種方式適用于采用Spring框架的獨(dú)立應(yīng)用程序,需要程序通過配置文件手工初始化Spring。

第二種:通過Spring提供的工具類獲取ApplicationContext對(duì)象

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");

說明:

1、這兩種方式適合于采用Spring框架的B/S系統(tǒng),通過ServletContext對(duì)象獲取ApplicationContext對(duì)象,然后在通過它獲取需要的類實(shí)例;
2、第一種方式在獲取失敗時(shí)拋出異常,第二種方式返回null。

第三種:繼承自抽象類ApplicationObjectSupport

說明:通過抽象類ApplicationObjectSupport提供的getApplicationContext()方法可以方便的獲取到ApplicationContext實(shí)例,進(jìn)而獲取Spring容器中的bean。Spring初始化時(shí),會(huì)通過該抽象類的setApplicationContext(ApplicationContext context)方法將ApplicationContext 對(duì)象注入。

第四種:繼承自抽象類WebApplicationObjectSupport

說明:和上面方法類似,通過調(diào)用getWebApplicationContext()獲取WebApplicationContext實(shí)例;

第五種:實(shí)現(xiàn)接口ApplicationContextAware

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

雖然Spring提供了后三種方法可以實(shí)現(xiàn)在普通的類中繼承或?qū)崿F(xiàn)相應(yīng)的類或接口來獲取Spring的ApplicationContext對(duì)象,但是在使用時(shí)一定要注意繼承或?qū)崿F(xiàn)這些抽象類或接口的普通java類一定要在Spring的配置文件(即application-context.xml文件)中進(jìn)行配置,否則獲取的ApplicationContext對(duì)象將為null。

下面通過實(shí)現(xiàn)接口ApplicationContextAware的方式演示如何獲取Spring容器中的bean:
首先自定義一個(gè)實(shí)現(xiàn)了ApplicationContextAware接口的類,實(shí)現(xiàn)里面的方法:

package com.ghj.tool;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class SpringConfigTool implements ApplicationContextAware {// extends ApplicationObjectSupport{

 private static ApplicationContext ac = null;
 private static SpringConfigTool springConfigTool = null;

 public synchronized static SpringConfigTool init() {
 if (springConfigTool == null) {
  springConfigTool = new SpringConfigTool();
 }
 return springConfigTool;
 }

 public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
 ac = applicationContext;
 }

 public synchronized static Object getBean(String beanName) {
 return ac.getBean(beanName);
 }
}

其次在applicationContext.xml文件進(jìn)行配置:

復(fù)制代碼 代碼如下:
<bean id="SpringConfigTool" class="com.ghj.tool.SpringConfigTool"/>

最后通過如下代碼就可以獲取到Spring容器中相應(yīng)的bean了:
復(fù)制代碼 代碼如下:
SpringConfigTool.getBean("beanId");

注意一點(diǎn),在服務(wù)器啟動(dòng)Spring容器初始化時(shí),不能通過以下方法獲取Spring容器:

import org.springframework.web.context.ContextLoader; 
import org.springframework.web.context.WebApplicationContext; 
 
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); 
wac.getBean(beanID);

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

相關(guān)文章

  • JVM自定義類加載器在代碼擴(kuò)展性實(shí)踐分享

    JVM自定義類加載器在代碼擴(kuò)展性實(shí)踐分享

    這篇文章主要介紹了JVM自定義類加載器在代碼擴(kuò)展性實(shí)踐分享,一個(gè)類型從被加載到虛擬機(jī)內(nèi)存中開始,到卸載出內(nèi)存為止,它的整個(gè)生命周期將會(huì)經(jīng)歷加載、驗(yàn)證、準(zhǔn)備、解析、初始化 、使用和卸載七個(gè)階段,其中驗(yàn)證、準(zhǔn)備、解析三個(gè)部分統(tǒng)稱為連接
    2022-06-06
  • 如何使用Bean Validation 解決業(yè)務(wù)中參數(shù)校驗(yàn)

    如何使用Bean Validation 解決業(yè)務(wù)中參數(shù)校驗(yàn)

    這篇文章主要介紹了如何使用Bean Validation 解決業(yè)務(wù)中參數(shù)校驗(yàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java RabbitMQ的TTL和DLX全面精解

    Java RabbitMQ的TTL和DLX全面精解

    過期時(shí)間TTL表示可以對(duì)消息設(shè)置預(yù)期的時(shí)間,在這個(gè)時(shí)間內(nèi)都可以被消費(fèi)者接收獲?。贿^了之后消息將自動(dòng)被刪除。DLX, 可以稱之為死信交換機(jī),當(dāng)消息在一個(gè)隊(duì)列中變成死信之后,它能被重新發(fā)送到另一個(gè)交換機(jī)中,這個(gè)交換機(jī)就是DLX ,綁定DLX的隊(duì)列就稱之為死信隊(duì)列
    2021-09-09
  • Java Apollo環(huán)境搭建以及集成SpringBoot案例詳解

    Java Apollo環(huán)境搭建以及集成SpringBoot案例詳解

    這篇文章主要介紹了Java Apollo環(huán)境搭建以及集成SpringBoot案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • JMX監(jiān)控的具體使用

    JMX監(jiān)控的具體使用

    JMX最常見的場(chǎng)景是監(jiān)控Java程序的基本信息和運(yùn)行情況,本文主要介紹了JMX監(jiān)控的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • SpringCloud的網(wǎng)關(guān)Zuul和Gateway詳解

    SpringCloud的網(wǎng)關(guān)Zuul和Gateway詳解

    SpringCloudZuul和SpringCloudGateway都是用于構(gòu)建微服務(wù)架構(gòu)中的API網(wǎng)關(guān)的組件,但SpringCloudGateway在性能、功能特性和生態(tài)支持等方面有一些優(yōu)勢(shì),因此推薦使用SpringCloudGateway作為首選
    2025-02-02
  • 如何運(yùn)行SpringBoot項(xiàng)目的方法

    如何運(yùn)行SpringBoot項(xiàng)目的方法

    這篇文章主要介紹了如何運(yùn)行SpringBoot項(xiàng)目的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java中java.lang.ClassCastException異常原因及解決方法

    Java中java.lang.ClassCastException異常原因及解決方法

    大家好,本篇文章主要講的是Java中java.lang.ClassCastException異常原因及解決方法,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • 巧用Spring中的@Order進(jìn)行排序

    巧用Spring中的@Order進(jìn)行排序

    這篇文章主要介紹了巧用Spring中的@Order進(jìn)行排序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java 條件控制與循環(huán)控制實(shí)例

    Java 條件控制與循環(huán)控制實(shí)例

    下面小編就為大家?guī)硪黄狫ava 條件控制與循環(huán)控制實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05

最新評(píng)論

乡宁县| 台中县| 博白县| 福贡县| 云梦县| 承德市| 凤山县| 高尔夫| 双柏县| 闸北区| 布拖县| 岑巩县| 林周县| 长沙市| 堆龙德庆县| 永仁县| 瓮安县| 萨迦县| 大埔区| 中阳县| 承德市| 平凉市| 长子县| 信宜市| 吉林省| 商河县| 绥德县| 新河县| 正安县| 平遥县| 康保县| 洞头县| 登封市| 花垣县| 兖州市| 文登市| 平潭县| 安新县| 佛山市| 尼勒克县| 宜阳县|