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);
}
}
}
}
分享到:
相关推荐
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...
这个jar文件里大部分的类都要依赖 spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar包。 (9) spring-remoting.jar 这个jar文件包含支持EJB、JMS、远程调用Remoting(RMI、Hessian、Burlap、...
到此,Struts+hibernate+spring配置完成。 附加:在项目名称的右键后进入Properties然后进入Java Build Path后查看加载的jar包。 具体项目的开发详细文档请见下一篇文章《struts+hibernate+spring项目开发示例》 ...
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 ...
2、spring-mvc配置文件包括两部分,一个是spring传统配置文件,在代码中为“applicationContext.xml”,主要配置代码中各种bean以及依赖关系;另外一个是spring-mvc特有的配置文件,处理跳转的代理类得(相当于...
学习spring,要有一定的Java基础,同时应用过spring基于xml的配置。(或者学习过官网的Spring课程) 学习springmvc,要有一定java web开发基础。同时对spring框架要有一定了解。 3、课程亮点 系统的学习Spring框架...
本部分代码仅仅提供一种功能演示,如果实际应用仍需进一步完善(建议使用一些成型的Ioc框架,例如Spring.net或Castle等)。经过改造后 的系统,组件间依赖关系如下图: 可以看出这次实现了真正的“针对接口编程”...
从加载过程我们可以看到,首先从Servlet事件中得到ServletContext,然后可以读到配置好的在web.xml的中的各个属性值,然后ContextLoder实例化WebApplicationContext并完成其载入和初始化作为根上下文。当这个根上...
配置是最重要的部分,我们来分层次讲解配置。 4.1 先配置数据源 数据源在application.yml中的配置前缀为spring.datasource。那么基本的配置如下: spring: datasource: # 连接池实现的限定名,这里使用hikari连接...
在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...
完整配置可以参考 [src/main/resources/application-old.yml](https://github.com/abel533/MyBatis-Spring-Boot/blob/master/src/main/resources/application-old.yml) ,和 MyBatis 相关的部分配置如下: ...
Spring配置管理SessionFactory与数据库的连接,在实际的应用中,数据源会采用依赖注入的方式,传递给SessionFactory。 见beans-config_sh.xml 24.3 Spring对Hibernate的简化 24.3.1 概述 Hibernate的持久层访问步骤...
由于Spring通过代理Hibernate完成数据层的操作,所以原Hibernate的配置文件hibernate.cfg.xml的信息也转移到Spring的配置文件中: 代码 4 Spring中有关Hibernate的配置信息 1. 2. !-- 数据源的配置 //--> 3. ...
如果应用启动过慢,可以尝试延迟加载Spring配置(风险:运行时检查) 将prototype类型bean控制在最低范围; 不要每次请求都实例化Spring Context; 对可以在后台运行的任务,考虑使用Spring的异步任务执行器来减少...
-- 当配置文件修改后,系统自动加载该文件。开发阶段建议打开此功能 --> <!-- 指定浏览器输出的编码格式 --> <!--将action内容放在package元素下,package元素的name值与extends值可以使用默认值,如下所...
微服务模块初始化时,常量和数据库信息等使用云配置服务(spring config)获取; 微服务之间使用负载均衡(ribbon); 微服务网关路由配置; 微服务断路器(hystrix)及监听服务等 启动步骤: 1.启动server-...
,springboot支持通过不同的profile来配置不同环境的配置,下面就大致介绍一下yml配置文件跟properties配置文件怎么使用profile配置不同环境的配置文件
rar包内含有spring2.5.6源码,解压即可使用 ...好了,就这么多了,本文只作为参考,只讲解了如何加载bean定义这块,只作为一个参考,希望对其他朋友能有所帮助吧,因为时间匆忙,有错漏的地方请指正。
JCL是可配置,动态和可扩展的自定义类加载器,可直接从Jar文件和其他来源加载Java类。 这样做的动机是创建隔离的类加载器,该类加载器可以轻松地与IoC框架(如Spring)和Web应用程序集成。 整个库,包括其代码库和...
本次课程的主要内容:掌握系统框架设计原理,工厂模式,委托模式的实现,Spring的IOC依赖注入技术,Struts2,Hibernate与Spring的整合,ApplicationContext读取资源文件的3种方法,多个配置文件的加载与导入,静态...