• 手动获取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的话就是从当前的工作目录
    
  • 相关阅读:
    POJ 1044: Date bugs
    POJ 1017: Packets
    POJ 1014: Dividing
    POJ 1012: Joseph
    POJ 1011: Sticks
    POJ 1008: Maya Calendar
    POJ 1005: I Think I Need a Houseboat
    为什么要自动化测试
    微软CodeDom模型学习笔记(全)
    概念完整性
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/3949332.html
Copyright © 2020-2023  润新知