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 MVC项目中,加载jar包中的Spring配置文件是一个常见的需求,特别是在进行SSM(Spring、Spring MVC、MyBatis)整合时。SSM框架的整合通常涉及到多个配置文件的组织和管理,其中一部分配置可能会被打包到独立...
在Spring 3.0框架中,配置文件是管理和组织应用程序行为的关键部分。Properties文件则常用于存储应用程序的配置参数,如数据库连接字符串、系统环境变量等。本篇将详细讲解如何在Spring 3.0的配置文件中加载...
Spring Boot 2.4 中的配置文件加载机制发生了重大变化,这些变化将影响到应用程序的配置文件加载方式。下面是相关知识点的详细介绍: 一、为什么要进行这些更改 随着最新版本 Spring Boot 的发布,Spring 一直在...
`<listener>`标签中的`<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>`定义了一个监听器,它会在Web应用启动时自动加载默认的Spring配置文件,即`/WEB-INF/...
本实践指南将深入探讨Spring配置的最佳实践,旨在帮助开发者优化代码,提高应用的可维护性和可扩展性。 一、XML配置与Java配置的选择 Spring最初是以XML配置为主,但随着版本的更新,Java配置逐渐成为首选。Java...
在Spring框架中,加载顺序是理解应用程序启动过程的关键部分,涉及到bean的实例化、初始化以及依赖注入等多个环节。本文将详细探讨Spring加载顺序,并结合`@PostConstruct`、`构造方法`以及`@Autowired`等关键注解...
《Spring配置文件模板详解》 在Java开发领域,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)能力,成为了企业级应用开发的重要选择。而...
- **ContextLoaderListener**:当Web应用启动时,会加载一个或多个Spring配置文件,并创建一个WebApplicationContext。通过这种方式可以实现容器级别的初始化。 - **ContextLoaderServlet**:与...
"Spring配置文件spring-context.zip"包含了Spring框架中的上下文配置,这是Spring管理对象及服务的核心。 `applicationContext.xml`是Spring应用上下文的主配置文件,它定义了bean的声明、bean之间的依赖关系以及...
Spring Bean 加载过程是 Spring 框架中最核心的部分之一,涉及到 ApplicationContext 的初始化、Bean 的加载和注册等过程。在 Spring Boot 应用程序中,SpringApplication 负责加载和管理 Bean。 SpringApplication...
下面是对Spring配置文件的详细介绍。 首先,Spring配置文件通常是以`.xml`为扩展名的文件,例如`beans.xml`。这些文件存储在项目的`src/main/resources`目录下,以便在运行时被自动加载。Spring容器...
你可以使用JUnit或者Spring的TestContext框架创建测试类,通过@ContextConfiguration注解加载Spring配置,并使用@Autowired注入需要测试的bean。然后编写测试方法,检查MyBatis-Spring的集成是否正常工作。 在学习...
在Spring框架中,Bean的加载顺序是理解Spring IoC(Inversion of Control,控制反转)容器工作原理的关键部分。这个过程涉及到Bean定义的解析、实例化、初始化等多个步骤。让我们详细探讨Spring Bean加载顺序的各个...
3. 对于复杂的业务逻辑,可以利用Spring的Profile特性,根据环境(如开发、测试、生产)加载不同的配置。 4. 使用Spring的AOP和AspectJ进行切面编程,可以实现更灵活的代码组织和更少的重复代码。 5. 配合使用Maven...
如果是传统的Spring应用,可以通过ApplicationContext接口来创建一个容器并加载配置。如果是Spring Boot应用,通常会有一个主启动类,其中包含@SpringBootApplication注解,它会自动加载配置并启动应用。 ```java ...
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...
在Spring框架中,配置文件是应用的核心组成部分,它定义了bean的定义、依赖关系以及其他配置信息。本篇文章将深入探讨如何在Spring中读取不同目录下的配置文件,以及使用`ClassPathXmlApplicationContext`和`...
"Spring+mvc+mybatis Mapper xml自动加载"这个主题聚焦于如何在开发过程中优化配置,使得改动Mapper XML文件后,无需重启Tomcat服务器,就可以立即生效,从而提高开发效率。 Spring MVC是Spring框架的一部分,它...
核心工具类的集合,是Spring框架其他组件的基础,也是所有Spring应用的必备部分。它依赖于 Commons Logging,允许灵活的日志记录机制,如Log4J。 3. **spring-beans.jar**: 提供了访问配置文件、创建和管理bean...
- 当项目规模进一步扩大时,可以考虑使用Spring Cloud Config Server集中管理所有模块的配置,实现配置的远程加载和统一管理。 总之,Spring Boot的多模块配置文件读取策略旨在提高项目的可扩展性和可维护性。通过...