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的话就是从当前的工作目录
  • 相关阅读:
    程序员第一定律:关于技能与收入
    Android——全屏显示的两种方式
    Android与JavaScript方法相互调用
    IT职场人生:找谁占卜
    Linux 2.6.23开始使用CFS(complete fair schedule),线程Priority不再有效
    如何查看一份linux kernel source的版本?
    tar解包的时候如何exclude一些目录
    rsync通过SSH来同步两台机器上的内容
    ArchLinux下配置TPLink WN550G PCI网卡为无线AP
    配置Linux下的时间服务器,让一批机器和一台机器时间同步
  • 原文地址:https://www.cnblogs.com/jpfss/p/9447902.html
Copyright © 2011-2022 走看看