gpt4 book ai didi

xml - 在 JAXB XmlAdapters 中为 Spring RESTful Controller 使用注入(inject)

转载 作者:行者123 更新时间:2023-12-04 05:29:36 26 4
gpt4 key购买 nike

我的应用程序需要 JAXB XmlAdapter 的实例如

public class CategoryTypeAdapter extends XmlAdapter<String, Category> {

@Autowired
protected CategoryService categoryService;

public CategoryTypeAdapter() {
}

@Override
public String marshal(Category v) throws Exception {
return (v == null) ? null : v.getId();
}

@Override
public Category unmarshal(String v) throws Exception {
// noop
if (StringUtils.isBlank(v)) {
return null;
}
// load via service
return this.categoryService.getCategory(v);
}
}

问:如何配置Spring的 Jaxb2RootElementHttpMessageConverter在适当的 mashaller 中设置这个适配器?

我知道有 Spring OXM 库,但我不清楚如何将 OXM 类与注释驱动的 REST Controller 一起使用。

最佳答案

您不能将 XmlAdapter 关联到 Spring 的消息转换器,而是使用正常的 JAXB 机制将此 XmlAdapter 注册为您需要的类型:

public class MyRootElement{

@XmlJavaTypeAdapter(CategoryTypeAdapter.class)
private Category category;

}

现在是如何注入(inject) CategoryService 的问题。进入 CategoryTypeAdapter ,有几种方法可以将 Spring 依赖项注入(inject)到非 Spring 托管对象中,如果您有 AspectJ 基础架构,可能最简单的方法是使用 @Configurable适配器上的注释。

关于xml - 在 JAXB XmlAdapters 中为 Spring RESTful Controller 使用注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12788103/

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