gpt4 book ai didi

java - 将解析后的 XML 对象加载到 Spring 上下文中

转载 作者:行者123 更新时间:2023-12-01 11:35:01 24 4
gpt4 key购买 nike

我有一个给定的 XSD 和相应的 XML。 XML 中的常量数据充当规则,我需要根据这些规则来处理输入。我正在寻找一种方法,可以在启动应用程序时解析 XML(使用提供的架构),并将由此生成的常量数据对象加载到 spring 上下文中。

到目前为止我还没有接近,但这就是我尝试过的

  1. 为给定的 XML/XSD 编写 JaxB 解析器
  2. XML 文件位于类路径,正在加载并解析以返回 Rule 对象

<bean id="tcs50MMSplitUtil" class="com.abc.common.SplitRuleService">
<property name="splitRule" value="classpath:config/Rule50MM.xml" />
</bean>

public class SplitRuleService {

private static Resource splitRule;

@Autowired
private RuleXMLParserHandler splitRuleParser;


public Rules getSplitRule() throws IOException {
InputStream io = splitRule.getInputStream();
return (Rules) splitRuleParser.parse(io);
}


public void setSplitRule(Resource splitRule) {
this.splitRule = splitRule;
}

}

但是每次调用 getRule 时都会解析 XML。我不想一次又一次地解析常量 XML。
我还查看了 AbstractBeanDefinitionParser 但认为这不是我想要的。

请帮忙。如果我未能清楚地表达我的问题,请告诉我。

最佳答案

定义解析 xml 的 @PostConstruct 方法。在构建 bean 并设置所有 Autowiring 字段后,Spring 将调用该方法。像这样的东西:

private Rules rules;

@PostConstruct public void init() {
InputStream io = splitRule.getInputStream();
rules = splitRuleParser.parse(io);
}

public Rules getSplitRule() throws IOException {
return rules;
}

不要忘记关闭输入流。

关于java - 将解析后的 XML 对象加载到 Spring 上下文中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com