属性解析父子上下文中的顺序

时间:2014-07-17 10:10:22

标签: spring configuration

给定:在运行时创建的应用程序上下文,具有与运行时相关的属性以及其父应用程序上下文,具有自己的属性和占位符配置器。

问题:带有父级链接的子上下文实例化在占位符解决的瞬间实现,这对我来说根本不可接受,因为孩子的环境尚未配置。

即。进一步的代码粉碎了实例化:

    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
            new String[] { descriptor.getContextFilePath() }, parentContext);

    StandardEnvironment env = new StandardEnvironment();
    Properties props = descriptor.buildProperties(...);
    PropertiesPropertySource pps = new PropertiesPropertySource("endpointContextProps", props);
    env.getPropertySources().addLast(pps);
    context.setEnvironment(env);
    context.refresh();

我找到了它的工作解决方案,假设在初始化时不设置父上下文,但是在设置了所有必需的环境之后:

    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
            new String[] { descriptor.getContextFilePath() }, false);

    StandardEnvironment env = new StandardEnvironment();
    Properties props = descriptor.buildProperties(...);
    PropertiesPropertySource pps = new PropertiesPropertySource("endpointContextProps", props);
    env.getPropertySources().addLast(pps);

    context.setEnvironment(env);
    context.setParent(parentContext);
    context.refresh();

但是我不满意事实我应该知道我的行为的顺序,并且应该记住占位符配置器如何在上下文创建中工作。 我想知道是否有更简洁的方法让我的上下文工作?

0 个答案:

没有答案