zoukankan      html  css  js  c++  java
  • 手动获取spring的ApplicationContext和bean对象

    WEB项目:

    方法1:

    1
    ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc)

     方法2:

    1
    ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc)

     方法3:

    1
    写一个工具类类继承ApplicationObjectSupport,并将这个加入到spring的容器

     方法4:

    1
    写一个工具类类继承WebApplicationObjectSupport,并将这个加入到spring的容器

     方法5:(推荐)

    1
    写一个工具类实现ApplicationContextAware接口,并将这个加入到spring的容器

     示例:

    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
    import java.util.Map;
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
     
    /**
     * 获取ApplicationContext和Object的工具类
     * @author yzl
     *
     */
    @SuppressWarnings({ "rawtypes""unchecked" })
    public class SpringContextUtils implements ApplicationContextAware {
        private static ApplicationContext applicationContext;
     
        public void setApplicationContext(ApplicationContext arg0)
                throws BeansException {
            applicationContext = arg0;
        }
     
        /**
         * 获取applicationContext对象
         * @return
         */
        public static ApplicationContext getApplicationContext(){
            return applicationContext;
        }
         
        /**
         * 根据bean的id来查找对象
         * @param id
         * @return
         */
        public static Object getBeanById(String id){
            return applicationContext.getBean(id);
        }
         
        /**
         * 根据bean的class来查找对象
         * @param c
         * @return
         */
        public static Object getBeanByClass(Class c){
            return applicationContext.getBean(c);
        }
         
        /**
         * 根据bean的class来查找所有的对象(包括子类)
         * @param c
         * @return
         */
        public static Map getBeansByClass(Class c){
            return applicationContext.getBeansOfType(c);
        }
    }

    非WEB项目

    1
    ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml")

    可选的操作方法有:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    一:
    String[]   path={"WebRoot/WEB-INF/applicationContext.xml","WebRoot/WEB-INF/applicationContext_task.xml"};
    ApplicationContext context = new FileSystemXmlApplicationContext(path);
     
    二:
    String path="WebRoot/WEB-INF/applicationContext*.xml";
    ApplicationContext context = new FileSystemXmlApplicationContext(path);
     
    三:
    ApplicationContext ctx = new FileSystemXmlApplicationContext("classpath:地址");
    没有classpath的话就是从当前的工作目录

     

    另外关于对于接口ApplicationContextAware的理解,可以参考转载的另一篇笔记,深入浅出写的不错:

    org.springframework.context.ApplicationContextAware使用理解

    转自:http://www.cnblogs.com/yangzhilong/p/3949332.html

  • 相关阅读:
    ORA-28000 帐户已被锁定问题处理
    德邦总管 修改oracle数据库用户密码的方法
    测试面试题目
    python 把一文件包含中文的字符写到另外文件乱码 UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position
    python version 2.7 required,which was not found in the registry
    ImportError: No module named dateutil.parser
    解决python2.x用urllib2证书验证错误, _create_unverified_context
    python多版本兼容性问题:当同时安装Python2和Python3后,如何兼容并切换
    MAC OS git客户端安装及操作
    Pycharm连接gitlab
  • 原文地址:https://www.cnblogs.com/McCa/p/5920446.html
Copyright © 2011-2022 走看看