一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java類獲取Spring中bean的5種方式

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

2020-04-11 12:18lijiao JAVA教程

這篇文章主要為大家詳細介紹了Java類獲取Spring中bean的5種方式,感興趣的小伙伴們可以參考一下

獲取Spring中的bean有很多種方式,再次總結一下:
第一種:在初始化時保存ApplicationContext對象

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

說明:這種方式適用于采用Spring框架的獨立應用程序,需要程序通過配置文件手工初始化Spring。
第二種:通過Spring提供的工具類獲取ApplicationContext對象

?
1
2
3
4
5
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系統,通過ServletContext對象獲取ApplicationContext對象,然后在通過它獲取需要的類實例;
2、第一種方式在獲取失敗時拋出異常,第二種方式返回null。
第三種:繼承自抽象類ApplicationObjectSupport

說明:通過抽象類ApplicationObjectSupport提供的getApplicationContext()方法可以方便的獲取到ApplicationContext實例,進而獲取Spring容器中的bean。Spring初始化時,會通過該抽象類的setApplicationContext(ApplicationContext context)方法將ApplicationContext 對象注入。
第四種:繼承自抽象類WebApplicationObjectSupport

說明:和上面方法類似,通過調用getWebApplicationContext()獲取WebApplicationContext實例;
第五種:實現接口ApplicationContextAware

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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文件進行配置:

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


最后通過如下代碼就可以獲取到Spring容器中相應的bean了:

復制代碼 代碼如下:
SpringConfigTool.getBean("beanId");


注意一點,在服務器啟動Spring容器初始化時,不能通過以下方法獲取Spring容器:

 

?
1
2
3
4
5
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
 
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
wac.getBean(beanID);

以上就是本文的全部內容,希望對大家的學習有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色小妹在线 | 色婷婷久久综合中文久久一本` | 日本人和黑人一级纶理片 | 亚洲欧美日本在线观看 | 色欧美在线 | 日本视频免费在线观看 | 青苹果乐园影院免费观看完整版 | 猛h辣h高h文湿重口 门房秦大爷在线阅读 | 日韩一区二区不卡 | 国产欧美综合精品一区二区 | 国产精品欧美在线观看 | 亚洲经典激情春色另类 | 久久99re热在线播放7 | 色婷婷综合和线在线 | 好湿好紧太硬了我太爽了网站 | 女明星放荡高h日常生活 | 国产亚洲视频网站 | 国产精品suv一区二区 | 特黄aa级毛片免费视频播放 | 男人和女人全黄一级毛片 | 国产亚洲精aa在线观看不卡 | 国产精品啪啪 | 国产videos hd| 美女被草哭 | 99久久99热久久精品免费看 | 97精品久久天干天天蜜 | 国产视频分类 | 国产盗摄美女嘘嘘视频 | 男女视频在线观看 | 国产精品午夜久久 | 欧美人shou交在线播放 | 91免费永久在线地址 | 国产精品免费小视频 | 色综合久久综合网欧美综合网 | 国产精品视频久久久 | 日本一卡2卡3卡4卡乱 | 亚洲码和乱人伦中文一区 | 极品丝袜乱系列在线阅读 | 毛片a区| oneday高清在线观看 | 亚洲国产成人在线视频 |