`
SpaceCity
  • 浏览: 97822 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring配置加载(部分)

阅读更多
package com.suning.crawler.util;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
* 手动加载spring
*
* @author xxx
*/
public final class SpringBean
{
    /**
     * spring容器加载
     */
    private static ApplicationContext context;

    /**
     * 私有构造函数
     */
    private SpringBean()
    {
    }

    /**
     * @param beanId
     *            beanID
     * @return bean
     */
    public static Object getBean(String beanId)
    {
        // 初始化Spring
        if (null == context)
        {
            initial();
        }

        return context.getBean(beanId);
    }

    /**
     * 初始化Spring容器
     */
    public static void initial()
    {
        // 获取spring配置文件
        String[] configLocation = getConfigLocation();
        // spring 初始化实例
        context = new ClassPathXmlApplicationContext(configLocation);
    }

    /**
     * 获取spring配置文件地址
     *
     * @return config目录下的spring配置文件地址
     */
    private static String[] getConfigLocation()
    {
        // spring文件地址
        List<String> configLocation = new ArrayList<String>();
        // 当前路径
        String basePath = SpringBean.class.getClassLoader().getResource("").getPath();
        File currentPath = new File(basePath);
        // 递归遍历spring文件
        recursizeConfigLocation(configLocation, currentPath.getAbsolutePath(), currentPath);

        return configLocation.toArray(new String[configLocation.size()]);
    }

    private static void recursizeConfigLocation(List<String> configLocation, String relativePath, File currentFile)
    {
        // 目录
        if (currentFile.exists() && currentFile.isDirectory())
        {
            // 遍历当前所有文件
            File[] currentFiles = currentFile.listFiles();
            // 文件名称

            for (File targetFile : currentFiles)
            {
                recursizeConfigLocation(configLocation, relativePath, targetFile);
            }
        }
        // 文件
        else if (currentFile.exists() && currentFile.isFile())
        {
            // 获取文件名称
            String targetName = currentFile.getName();
            // 过滤spring文件
            if (null != targetName && targetName.matches(".+\\.spring\\.xml"))
            {
                targetName = currentFile.getAbsolutePath();
                targetName = targetName.replace(relativePath, ".");
                configLocation.add(targetName);
            }
        }
    }
}
0
0
分享到:
评论

相关推荐

    Spring bean 动态注册,jar包热替换

    Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...

    spring jar 包详解

    这个jar文件里大部分的类都要依赖 spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar包。 (9) spring-remoting.jar 这个jar文件包含支持EJB、JMS、远程调用Remoting(RMI、Hessian、Burlap、...

    Myeclipse开发struts+hibernate+spring新手入门--环境配置---项目开发示例

    到此,Struts+hibernate+spring配置完成。 附加:在项目名称的右键后进入Properties然后进入Java Build Path后查看加载的jar包。 具体项目的开发详细文档请见下一篇文章《struts+hibernate+spring项目开发示例》 ...

    spring security 参考手册中文版

    38. Spring Data&Spring安全配置 273 39. @Query中的安全表达式 273 第八部分 附录 274 40.安全数据库模式 274 40.1用户模式 274 40.1.1集团当局 274 40.2持久登录(记得我)架构 275 40.3 ACL模式 275 40.3.1 ...

    spring-mvc代码示例+注释+文件解析(可直接运行)

    2、spring-mvc配置文件包括两部分,一个是spring传统配置文件,在代码中为“applicationContext.xml”,主要配置代码中各种bean以及依赖关系;另外一个是spring-mvc特有的配置文件,处理跳转的代理类得(相当于...

    Spring高级之注解驱动开发视频教程

    学习spring,要有一定的Java基础,同时应用过spring基于xml的配置。(或者学习过官网的Spring课程) 学习springmvc,要有一定java web开发基础。同时对spring框架要有一定了解。 3、课程亮点 系统的学习Spring框架...

    Spring.net框架

    本部分代码仅仅提供一种功能演示,如果实际应用仍需进一步完善(建议使用一些成型的Ioc框架,例如Spring.net或Castle等)。经过改造后 的系统,组件间依赖关系如下图: 可以看出这次实现了真正的“针对接口编程”...

    spring源代码解析

    从加载过程我们可以看到,首先从Servlet事件中得到ServletContext,然后可以读到配置好的在web.xml的中的各个属性值,然后ContextLoder实例化WebApplicationContext并完成其载入和初始化作为根上下文。当这个根上...

    从零搭建Spring Boot脚手架,集成mybatis.docx

    配置是最重要的部分,我们来分层次讲解配置。 4.1 先配置数据源 数据源在application.yml中的配置前缀为spring.datasource。那么基本的配置如下: spring: datasource: # 连接池实现的限定名,这里使用hikari连接...

    Spring面试题

    在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...

    spring-boot-集成mybatis带分页page

    完整配置可以参考 [src/main/resources/application-old.yml](https://github.com/abel533/MyBatis-Spring-Boot/blob/master/src/main/resources/application-old.yml) ,和 MyBatis 相关的部分配置如下: ...

    第24次课-1 Spring与Hibernate的整合

    Spring配置管理SessionFactory与数据库的连接,在实际的应用中,数据源会采用依赖注入的方式,传递给SessionFactory。 见beans-config_sh.xml 24.3 Spring对Hibernate的简化 24.3.1 概述 Hibernate的持久层访问步骤...

    ssh(structs,spring,hibernate)框架中的上传下载

     由于Spring通过代理Hibernate完成数据层的操作,所以原Hibernate的配置文件hibernate.cfg.xml的信息也转移到Spring的配置文件中:  代码 4 Spring中有关Hibernate的配置信息 1. 2. !-- 数据源的配置 //--> 3. ...

    09_高性能应用设计与开发技术.pptx

    如果应用启动过慢,可以尝试延迟加载Spring配置(风险:运行时检查) 将prototype类型bean控制在最低范围; 不要每次请求都实例化Spring Context; 对可以在后台运行的任务,考虑使用Spring的异步任务执行器来减少...

    spring3.2+strut2+hibernate4

    -- 当配置文件修改后,系统自动加载该文件。开发阶段建议打开此功能 --&gt; &lt;!-- 指定浏览器输出的编码格式 --&gt; &lt;!--将action内容放在package元素下,package元素的name值与extends值可以使用默认值,如下所...

    微服务框架demo (mvn+springboot+springcloud)

    微服务模块初始化时,常量和数据库信息等使用云配置服务(spring config)获取; 微服务之间使用负载均衡(ribbon); 微服务网关路由配置; 微服务断路器(hystrix)及监听服务等 启动步骤: 1.启动server-...

    Spring Boot使用profile如何配置不同环境的配置文件

    ,springboot支持通过不同的profile来配置不同环境的配置,下面就大致介绍一下yml配置文件跟properties配置文件怎么使用profile配置不同环境的配置文件

    spring2.5.6源码

    rar包内含有spring2.5.6源码,解压即可使用 ...好了,就这么多了,本文只作为参考,只讲解了如何加载bean定义这块,只作为一个参考,希望对其他朋友能有所帮助吧,因为时间匆忙,有错漏的地方请指正。

    JCL:Jar Class Loader,一个可配置的动态自定义类加载器,旨在在IoC框架和Web应用程序中创建,管理和操作隔离的Java类加载器。

    JCL是可配置,动态和可扩展的自定义类加载器,可直接从Jar文件和其他来源加载Java类。 这样做的动机是创建隔离的类加载器,该类加载器可以轻松地与IoC框架(如Spring)和Web应用程序集成。 整个库,包括其代码库和...

    Spring入门到精通2017视频教程

    本次课程的主要内容:掌握系统框架设计原理,工厂模式,委托模式的实现,Spring的IOC依赖注入技术,Struts2,Hibernate与Spring的整合,ApplicationContext读取资源文件的3种方法,多个配置文件的加载与导入,静态...

Global site tag (gtag.js) - Google Analytics