给定:在运行时创建的应用程序上下文,具有与运行时相关的属性以及其父应用程序上下文,具有自己的属性和占位符配置器。
问题:带有父级链接的子上下文实例化在占位符解决的瞬间实现,这对我来说根本不可接受,因为孩子的环境尚未配置。
即。进一步的代码粉碎了实例化:
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();
但是我不满意事实我应该知道我的行为的顺序,并且应该记住占位符配置器如何在上下文创建中工作。 我想知道是否有更简洁的方法让我的上下文工作?