Spring引导xml bean急切地初始化

时间:2017-09-21 05:59:30

标签: java spring spring-boot

我有类似here的要求。即从我的项目中,我通过maven引用一个库项目并从该库项目初始化xml bean。但就我而言,我必须从多个上下文文件初始化bean。我还要求动态决定上下文文件的名称,如{dbName} Context.xml。我必须维护这些文件的正确顺序,因此我通过this之类的代码初始化所有这些文件中的bean。

这部分适用于我,它可以初始化bean,但不是急切的。 Beans懒洋洋地在这里初始化,即使在xml配置中,' lazy-init' attribute设置为false。

示例代码:

@Configuration
public class MyConfig{
    @Autowired
    GenericApplicationContext context;

    @PostConstruct
    public void loadXmlContext() throws IOException {
        String dbName = getDatabaseName();

        Resource[] resources = getResourcesFromContext(
                "context1.xml",
                "context2.xml",
                dbName+"Context.xml",
                "context3.xml");

        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
        reader.setBeanClassLoader(context.getClassLoader());
        for (Resource r : resources) {
            reader.loadBeanDefinitions(r);
        }
    }

    private Resource[] getResourcesFromContext(String... contextFiles) throws IOException {
        PathMatchingResourcePatternResolver pmrl = new PathMatchingResourcePatternResolver(context.getClassLoader());
        Resource[] resources = new Resource[0];

        for(String contextFile: contextFiles) {
            resources = ArrayUtils.addAll(resources, pmrl.getResources(contextFile));
        }
        return resources;
    }
}

问题:在这种情况下,如何从xml上下文文件eagery加载bean?

0 个答案:

没有答案