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 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中org.springframework.beans.factory.support.DefaultListableBeanFactory.<clinit>解决方法.

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

《Spring In Action》 读书笔记(3) -- factory-method的应用

因为单例类的特殊性,spring对于单例类的注入提供了factory-method属性。

Spring实战之org.springframework.beans.factory.config.MethodInvokingFactoryBean

在用spring管理我们的类的时候有时候希望有些属性值是来源于一些配置文件,系统属性,或者一些方法调用的结果,对于前两种使用方式可以使用spring的PropertyPlaceholderConfig...

spring factory-method

配置工厂Bean 通常由应用程序直接使用new创建新的对象,为了将对象的创建和使用相分离,采用工厂模式,即应用程序将对象的创建及初始化职责交给工厂对象. 一般情况下,应用程序有自己的工厂对象来创建...
  • lij71
  • lij71
  • 2014-02-11 13:53
  • 422

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

普通定义Bean并且进行初始化的方法一般通过property(属性)的setter方法或者构造方法进行。例如 [html] view plaincopy b...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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