在网上搜了一下,写一下我试用的两个方法。

 

1

2

ApplicationContext ctx=new FileSystemXmlApplicationContext("/application.xml");

//此处的application.xml必须位于系统中一个具体的位置

这个方法貌似只能加载一个XML文件,但是对象内参数的bean配置在其他的xml文件里,所以这个不可以,会报出找不到bean配置的错误。

 

1

2

ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:spring/*.xml");

//此处的文件必须位于classpath路径中

这个方法可以加载多个XML文件,但如果项目中多个地方都需要用到的话,不太推荐。

 

下面一种方法适合在多个地方都用到的情况下,建立一个Application的持有类,实现ApplicationContextAware接口。

 

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

public class ApplicationContextHolder implements ApplicationContextAware{

    

    private static Log log = LogFactory.getLog(ApplicationContextHolder.class);

    private static ApplicationContext applicationContext;

    @SuppressWarnings("all")

    public void setApplicationContext(ApplicationContext context) throws BeansException {

        if(this.applicationContext != null) {

            throw new IllegalStateException("ApplicationContextHolder already holded 'applicationContext'.");

        }

        this.applicationContext = context;

        log.info("holded applicationContext,displayName:"+applicationContext.getDisplayName());

    }

    

    public static ApplicationContext getApplicationContext() {

        if(applicationContext == null)

            throw new IllegalStateException("'applicationContext' property is null,ApplicationContextHolder not yet init.");

        return applicationContext;

    }

    

    public static Object getBean(String beanName) {

        return getApplicationContext().getBean(beanName);

    }

    

    public static void cleanHolder() {

        applicationContext = null;

    }

}

用法是将bean配置到ApplicationContext.xml文件中.这样保证了一个运行环境下只有一个实例,并且也间接保证了只有一个ApplicationContext对象.其他类中如要获取示例,调用

 

1

ApplicationContextHolder.getBean("beanName")

就可以了.

 还需要把ApplicationContextHolder以bean的形式映射到applicationContext.xml中

获取Spring的ApplicationContext的方法的更多相关文章

  1. 获取spring的ApplicationContext几种方式【转】

    转自:http://blog.sina.com.cn/s/blog_9c7ba64d0101evar.html Java类获取spring 容器的bean 常用的5种获取spring 中bean的方式 ...

  2. 普通Java类获取Spring的Bean的方法

    普通Java类获取Spring的Bean的方法 在SSH集成的前提下.某些情况我们需要在Action以外的类中来获得Spring所管理的Service对象. 之前我在网上找了好几好久都没有找到合适的方 ...

  3. 怎么获取Spring的ApplicationContext

    在 WEB 开发中,可能会非常少须要显示的获得 ApplicationContext 来得到由 Spring 进行管理的某些 Bean, 今天我就遇到了,在这里和大家分享一下, WEB 开发中,怎么获 ...

  4. 获取spring上下文 - applicationContext

    前言 spring上下文是spring容器抽象的一种实现.将你需spring帮你管理的对象放入容器的一种对象,ApplicationContext是一维护Bean定义以及对象之间协作关第的高级接口. ...

  5. 普通java类获取spring容器bean的方法

    很多时候,我们在普通的java类中需要获取spring的bean来做操作,比如,在线程中,我们需要操作数据库,直接通过spring的bean中构建的service就可以完成.无需自己写链接..有时候有 ...

  6. 手动获取spring的ApplicationContext和bean对象

    WEB项目: 方法1: 1 ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(S ...

  7. 获取Spring的ApplicationContext的几种方式

    Application Context定义 简单来说就是Spring中的高级容器,可以获取容器中的各种bean组件,注册监听事件,加载资源文件等功能. 具体定义可以参考官网:https://sprin ...

  8. 普通Java类获取spring 容器的bean的5种方法

    方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的工具类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSu ...

  9. 【Spring学习笔记-3.1】让bean获取spring容器上下文(applicationContext.xml)

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

随机推荐

  1. Linux 高级网络编程

    设置套接字函数: #include<sys/socket.h> int setsockopt(int sockfd, int level, int optname, const void* ...

  2. ThinkPHP 中M方法和D方法详解----转载

    转载的地址,http://blog.163.com/litianyichuanqi@126/blog/static/115979441201223043452383/ 自己学到这里的时候,不能清除的分 ...

  3. lucene 3.0.2 搜索

    1.lucene 词频 转载:http://mxdxm.iteye.com/blog/989031 lucene in action作为action系列,确实坚持了其实用性的特色.全书花了很大的篇幅来 ...

  4. 从网页上抓取Windows补丁信息然后整型输出(PowerShell)

    $report = [pscustomobject]@{'Date' = $null; 'MSRC' = $null; 'KB' = $null; 'Severity' = $null; 'Versi ...

  5. 【应用笔记】【AN002】通过iTool2基于MinGW平台读写EEPROM

    为了增加大家 DIY 的乐趣,XiaomaGee今天为大家只做了一篇使用iTool2内置的USB转I2C来读写EEPROM的方法和代码. iTool2简介 iTool2为银杏公司面向电子类研发工程师推 ...

  6. OpenCV学习笔记——形态学梯度操作

    代码: #include<cv.h> #include<highgui.h> int main(void) { cvNamedWindow("cmp"); ...

  7. NEC学习 ---- 布局 -两列, 左侧定宽,右侧自适应

    CSS代码:以下两处代码是NEC中CSS初始化样式和功能性样式.今后的NEC研究中,默认这两处是引用的. /* 这是CSS reset 代码 --- 初始化样式 */ /* reset */ html ...

  8. rsync安装及配置

    一.Server端 CentOS 6下安装yum -y install xinetd1.配置:vi /etc/xinetd.d/rsyncservice rsync{    disable = yes ...

  9. linux回到上次目录与历史命令查找快捷方式

    # cd -进入上次访问目录 二.历史命令搜索操作快捷键:[Ctrl + r], [Ctrl + p], [Ctrl + n] 在终端中按捉 [Ctrl] 键的同时 [r] 键,出现提示:(rever ...

  10. Twos Complement Representation

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION Like sign magnitude, ...