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

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|

服務器之家 - 編程語言 - JAVA教程 - Spring在代碼中獲取bean的方法小結(jié)

Spring在代碼中獲取bean的方法小結(jié)

2020-06-30 11:07daisy JAVA教程

在工作中有時候我們需要在非spring依賴注入或管理的類中獲取service、dao等bean對象,這時候用@Autowired和@Resource顯然是不行的,那么下面這篇文章就給大家了整理幾種獲取bean的方式,對大家的學習和工作具有一定的參考借鑒,下面來

一、通過Spring提供的ContextLoader

?
1
2
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
wac.getBean(beanID);

這種方式不依賴于servlet,不需要注入的方式。但是需要注意一點,在服務器啟動時,Spring容器初始化時,不能通過這種方法獲取Spring容器

二、實現(xiàn)接口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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
public class SpringContextUtil implements ApplicationContextAware {
  private static ApplicationContext applicationContext;   //Spring應用上下文環(huán)境
 
  /**
   * 實現(xiàn)ApplicationContextAware接口的回調(diào)方法,設置上下文環(huán)境
   * @param applicationContext
   * @throws BeansException
   */
  public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    SpringContextUtil.applicationContext = applicationContext;
  }
 
  /**
   * @return ApplicationContext
   */
  public static ApplicationContext getApplicationContext() {
    return applicationContext;
  }
 
  /**
   * 獲取對象
   * @param name
   * @return Object 一個以所給名字注冊的bean的實例
   * @throws BeansException
   */
  public static Object getBean(String name) throws BeansException {
    return applicationContext.getBean(name);
  }
 
  /**
   * 獲取類型為requiredType的對象
   * 如果bean不能被類型轉(zhuǎn)換,相應的異常將會被拋出(BeanNotOfRequiredTypeException)
   * @param name    bean注冊名
   * @param requiredType 返回對象類型
   * @return Object 返回requiredType類型對象
   * @throws BeansException
   */
  public static Object getBean(String name, Class requiredType) throws BeansException {
    return applicationContext.getBean(name, requiredType);
  }
 
  /**
   * 如果BeanFactory包含一個與所給名稱匹配的bean定義,則返回true
   * @param name
   * @return boolean
   */
  public static boolean containsBean(String name) {
    return applicationContext.containsBean(name);
  }
 
  /**
   * 判斷以給定名字注冊的bean定義是一個singleton還是一個prototype。
   * 如果與給定名字相應的bean定義沒有被找到,將會拋出一個異常(NoSuchBeanDefinitionException)
   * @param name
   * @return boolean
   * @throws NoSuchBeanDefinitionException
   */
  public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
    return applicationContext.isSingleton(name);
  }
 
  /**
   * @param name
   * @return Class 注冊對象的類型
   * @throws NoSuchBeanDefinitionException
   */
  public static Class getType(String name) throws NoSuchBeanDefinitionException {
    return applicationContext.getType(name);
  }
 
  /**
   * 如果給定的bean名字在bean定義中有別名,則返回這些別名
   * @param name
   * @return
   * @throws NoSuchBeanDefinitionException
   */
  public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
    return applicationContext.getAliases(name);
  }
}

三、配置bean

?
1
2
<!-- SpringContextUtil 通過代碼獲取bean -->
<bean id="SpringContextUtil " class="org.shaofan.demo.utils.SpringContextUtil"/>

總結(jié)

以上就是Spring在代碼中獲取bean的幾種方式,希望本文的內(nèi)容對大家的學習或者工作能有所幫助,如果有疑問大家可以留言交流。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: kuaibo成人播放器 | 日韩欧美亚洲国产高清在线 | 我的男友是消防员在线观看 | brazzersvideo欧美最新| www.87福利| 污到湿的爽文免费阅读 | 特黄一级 | 国产精品一级视频 | 精品国产自在现线拍400部 | 香蕉在线播放 | 国产第2页 | 亚洲国产综合自在线另类 | 亚洲女同在线观看 | 香蕉久久一区二区不卡无毒影院 | 狠狠撸在线播放 | 精品久久久久久久久久久久久久久 | 美女被狂干 | 日本在线观看免费观看完整版 | 国内精品久久久久久野外 | 男人v天堂 | 天堂素人在线 | tobu8中国在线观看免费视频 | 日本一区二区三区国产 | 欧美黑人性 | 国产精品免费一级在线观看 | 亚洲精品国产乱码AV在线观看 | 久久久伊人影院 | 亚洲国产在线午夜视频无 | 亚洲精品国产A久久久久久 亚洲精品福利一区二区在线观看 | 欧洲老妇人70| 香蕉国产人午夜视频在线观看 | 国产精品一区二区三区免费 | 亚洲国产成人久久精品hezyo | 亚洲精品国偷拍自产在线观看蜜臀 | 国产理论片在线观看 | 亚洲国产成人久久精品影视 | 国产精品99爱免费视频 | 99rv精品视频在线播放 | 亚洲色图第四页 | 精品淑女少妇AV久久免费 | 日韩在线视频一区二区三区 |