• 获取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中

  • 相关阅读:
    201521123115《Java程序设计》第7周学习总结
    201521123115《Java程序设计》第6周学习总结
    201521123115 《Java程序设计》第5周学习总结
    201521123115 《Java程序设计》第4周学习总结
    201521123115 《Java程序设计》第3周学习总结
    201521123115《Java程序设计》第2周学习总结
    201521123114 《Java程序设计》第13周学习总结
    201521123114 《Java程序设计》第12周学习总结
    201521123114 《Java程序设计》第11周学习总结
    201521123114 《Java程序设计》第10周学习总结
  • 原文地址:https://www.cnblogs.com/lanblogs/p/3240253.html
Copyright © 2020-2023  润新知