Spring factory load

原创 2012年03月30日 16:14:55

if (!classpathPrefix.endsWith("/"))
   classpathPrefix = classpathPrefix + "/";

  GenericApplicationContext appContext = null;
  if (useCache)
   appContext = getCachedContext(classpathPrefix, batchName);
  if (appContext != null) {
   log.debug("Returning cached application context:" + appContext);
   return appContext;
  }

  // create and load new instance
  appContext = new GenericApplicationContext();

  log.info("Loading spring config for environment: " + batchName);

  // Get the bean definitions for the environment
  ClassPathResource config = new ClassPathResource(classpathPrefix + batchName + CONFIG_SUFFIX);
  logResource("spring config", batchName, config);
  if (!config.exists())
   throw new RuntimeException("Config not found for environment: " + batchName);
  XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appContext);
  xmlReader.loadBeanDefinitions(config);

  // Get any local bean definitions
  ClassPathResource localConfig = new ClassPathResource(classpathPrefix + LOCAL_ENV + CONFIG_SUFFIX);
  logResource("spring config", LOCAL_ENV, localConfig);
  if (localConfig.exists())
   xmlReader.loadBeanDefinitions(localConfig);

  // Get property placeholders
  Resource envProps = new ClassPathResource(classpathPrefix + envName + PROPERTIES_SUFFIX);
  logResource("spring properties", envName, envProps);
  Resource passwordProps = new ClassPathResource(classpathPrefix + envName + PASSWORD_SUFFIX);
  logResource("spring properties", envName, passwordProps);  
  Resource localProps = new ClassPathResource(classpathPrefix + LOCAL_ENV + PROPERTIES_SUFFIX);
  logResource("spring properties", LOCAL_ENV, localProps);

  // Load together to allow overriding in local env
  Resource[] ra = combineExistingResources(envProps, passwordProps, localProps);
  if (ra.length > 0) {
   PropertyPlaceholderConfigurer placeholderConfig = new PropertyPlaceholderConfigurer();
   placeholderConfig.setLocations(ra);
   placeholderConfig.postProcessBeanFactory(appContext.getDefaultListableBeanFactory());
  }

  // Get property overrides
  Resource envOverrideProps = new ClassPathResource(classpathPrefix + envName + OVERRIDES_SUFFIX);
  logResource("spring override properties", envName, envOverrideProps);
  Resource localOverrideProps = new ClassPathResource(classpathPrefix + LOCAL_ENV + OVERRIDES_SUFFIX);
  logResource("spring override properties", LOCAL_ENV, localOverrideProps);

  // load together to allow overriding in local env
  Resource[] rao = combineExistingResources(envOverrideProps, localOverrideProps);
  if (rao.length > 0) {
   PropertyOverrideConfigurer overrideConfig = new PropertyOverrideConfigurer();
   overrideConfig.setLocations(rao);
   overrideConfig.postProcessBeanFactory(appContext.getDefaultListableBeanFactory());
  }

  // Cache before refreshing to allow a certain amount of self-referencing in the beans
  log.info("Caching app context:" + appContext);
  cacheContext(classpathPrefix, batchName, appContext);
  log.info("Refreshing app context:" + appContext);
  appContext.refresh();
  log.info("Returning app context:" + appContext);
  return appContext;

Spring中org.springframework.beans.factory.support.DefaultListableBeanFactory.<clinit>解决方法.

【原创文章,转载请注明出处】 刚学Spring,配置上就花了不少时间. 首先给Eclipse EE 装了一个Spring IDE 然后下载了Spring framework 3.0.6 http...

Spring factory-method

public class ClientService { private static ClientService clientService = new ClientService(); p...

整合Spring和Mybatis 中org.springframework.beans.factory.BeanCreationException错误

这两天学习strut2和spring的整合,启动服务器后总是爆粗如下错误, org.springframework.beans.factory.BeanCreationException:  Er...

无法创建action在spring中的bean的错:org.springframework.beans.factory.BeanCreationException: Error creating be

这个问题纠结了很久 终于解决了 原因是:我在action类的方法以外调用了其他自定义类的方法来给本类的变量赋值,所以在生成action的bean对象时这两个变量始终都是null,就无法创建...

spring启动失败:org.springframework.beans.factory.access.BootstrapException: Unable to initialize group d

从SVN上Checkout下来工程之后,导入Myeclipse不仅某些文件出现莫名错误,且启动报错。 根据看错误信息怀疑是配置问题或者缺包。 但是捏~包他多找不到哪一个,于是从checkout下...

hibernate与Spring整合时出现错误org.springframework.beans.factory.BeanCreationException: Error creating bean

hibernate与Spring整合时出现错误: org.springframework.beans.factory.BeanCreationException:Error creating b...

Spring学习笔记 使用Static Factory(静态工厂类)创建Bean

普通定义Bean并且进行初始化的方法一般通过property(属性)的setter方法或者构造方法进行。例如 这种定义创建Bean相当于使用new  com.cs...

Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean

同上一篇中静态工厂类创建Bean类似,唯一不同的是工厂类中获取实际对象的方法比如:getInstance() 不是静态方法(non-static)。 工厂类代码: package factoryb...

基于spring factory-bean的妙用

场景在业务逻辑里面往往会出现这样的步骤,比如更新信息到缓存、发送短信通知、发送邮件通知、推送信息到监控系统、到日志系统等。这些业务逻辑中的步骤,有相同的特点:不需要返回结果,业务逻辑不关心、同步调用会...

部署Spring AOP出现org.springframework.beans.factory.BeanCreationException解决方法

在部署Spring AOP时出现如下错误:rg.springframework.beans.factory.BeanCreationException: Error creating bean wit...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring factory load
举报原因:
原因补充:

(最多只允许输入30个字)