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

    WEB项目:

    方法1:

    ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc)
    

     方法2:

    ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc)
    

     方法3:

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

     方法4:

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

     方法5:(推荐)

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

     示例:

    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项目

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

    可选的操作方法有:

    一:
    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的话就是从当前的工作目录
    
  • 相关阅读:
    Ubuntu下安装Packet Tracer5.3过程
    杭电OJ-2093_考试排名
    杭电OJ-2072_单词数
    杭电OJ-2054_A == B ?
    杭电OJ-2032_杨辉三角
    c++不跳过空白符输入一行字符串
    【Little_things】调戏人小玩意_按钮位置移动文字改变(C#)
    笔记本以太网卡共享的无线网卡的网络
    杭电OJ-2104_hide handkerchief超简洁代码
    2019杭电多校一 C. Milk (dp)
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/3949332.html
Copyright © 2011-2022 走看看