zoukankan      html  css  js  c++  java
  • 获取Spring的ApplicationContext的方法

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

     

    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中

  • 相关阅读:
    mybatis 配置之<typeAliases>别名配置元素设置
    <q> 与 <blockquote> 的区别
    line-height属性
    ol/ul/dl的区别
    xampp修改mysql 启动脚本
    linux 设置查看文本行数
    vim跳出括号的方法
    vim中不同模式的帮助信息的查找
    ubuntu下安装自动补全YouCompleteMe
    ubuntu下将CapsLock改为Ctrl键
  • 原文地址:https://www.cnblogs.com/lanblogs/p/3240253.html
Copyright © 2011-2022 走看看