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);
            }
        }
    }
}

猜你喜欢

转载自spacecity.iteye.com/blog/1402079
今日推荐