首页 > 其他分享 >Spring factory load

Spring factory load

时间:2023-07-02 13:04:33浏览次数:36  
标签:load logResource Spring appContext factory classpathPrefix spring ClassPathResou

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;

标签:load,logResource,Spring,appContext,factory,classpathPrefix,spring,ClassPathResou
From: https://blog.51cto.com/u_16174476/6604468

相关文章

  • 在spring 的jdbc sql中使用in 语句
    1.<propertyname="sqlSelectPricesForHoldAssetByDate"><value>selectA.ASSETPRICEID,A.ASSETID,A.SOURCE,A.ASOFDATE,A.CURRENCY,A.BID,A.ASKfromassetpriceAINNERJOINloanfacilitylfONA.assetid=lf.assetidwh......
  • 使用Spring的NamedParameterJdbcTemplate完成DAO操作
    NamedParameterJdbcTemplate内部包含了一个JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干,NamedParameterJdbcTemplate相对于JdbcTemplate主要增加了参数可以命名的功能。publicObjectqueryForObject(Stringsql,MapparamMap,RowMapperrowMapper)......
  • (六)Spring源码解析:Spring AOP源码解析
    〇、AOP概念Aspect:切面给业务方法增加到功能,切面泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面是通知(Advice)。实际就是对主业务逻辑的一种增强。Pointcut:切入点切入点指声明的一个或多个连接点的集合,通过切入点指定一组方法。被标记为final......
  • 部署springboot项目到linux服务器
    1.使用Xshell连接服务器xshell免费版地址:家庭/学校免费-NetSarangWebsite(xshell.com)2.安装java运行环境sudoaptinstallopenjdk-8-jdk3.使用xftp上传后端jar包文件xftp免费版地址:家庭/学校免费-NetSarangWebsite(xshell.com)4.在xshell中使用命令......
  • SpringCloud学习(四)
    参考:https://blog.csdn.net/qq_25928447/article/details/124340264?spm=1001.2014.3001.5501消息队列之前如果需要进行远程调用,一般可以通过发送HTTP请求来完成,现在,可以使用第二种方式,就是消息队列,它能够将发送方发送的信息放入队列中,当新的消息入队时,会通知接收方进行处理......
  • 菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式
    一、概述。在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorller直接的交互的框架也是界面把信息传输到Contorller层的一种架构,通过这个架构可以让我们把页面和Contorller层解耦,使得开发人员的分工更加明确。二、代码演......
  • Spring 配置事务管理器方法的理解
    @BeanpublicPlatformTransactionManagertransactionManager(DataSourcedataSource){DataSourceTransactionManagertransactionManager=newDataSourceTransactionManager();transactionManager.setDataSource(dataSource);return......
  • SpringMVC的执行流程
    SpringMVC的执行流程要求掌握SpringMVC的执行流程了解SpringMVC的重要组件的作用概要我把整个流程分成三个阶段准备阶段匹配阶段执行阶段准备阶段在Web容器第一次用到DispatcherServlet的时候,会创建其对象并执行init方法init方法内会创建SpringWeb......
  • 【springboot】支持热部署
    加入依赖坐标<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency> 配置Compiler选项 按2下shift键,选择registry 修改配置后保存(ctrl+S)即可以热部署了或者直接点击更快......
  • 【springboot】配置项
    主要是properties和yml,可以互相转换(toyaml),如果是自己定义的变量,是可以通过@Value注解来从配置文件中注入对应配置的值。先看properties文件中的配置test.hello=Hello4再来看代码里面怎么用@RestControllerpublicclassTestController{@Value("${test.hello:TEST}")......