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

  • 相关阅读:
    SQL Server参数化查询
    MySQL平台数据库备份方案详细说明
    Android 关机弹出菜单
    android 4.1源码下载方法最新实例教程
    教你如何创建类似QQ的android弹出菜单
    三足鼎立已深入人心 移动开发平台前景展望
    Android上的蓝牙通信功能的开发:BluetoothChat例程分析
    Android经典动画案例分析
    Android使用FileObserver对sdcard文件或文件夹监控
    如何提高Android用户体验
  • 原文地址:https://www.cnblogs.com/lanblogs/p/3240253.html
Copyright © 2020-2023  润新知