Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Spring RESTful控制器的JAXB XmlAdapters中使用注入_Xml_Spring_Rest_Jaxb - Fatal编程技术网

在Spring RESTful控制器的JAXB XmlAdapters中使用注入

在Spring RESTful控制器的JAXB XmlAdapters中使用注入,xml,spring,rest,jaxb,Xml,Spring,Rest,Jaxb,我的应用程序需要jaxbxmladapter的实例,例如 public class CategoryTypeAdapter extends XmlAdapter<String, Category> { @Autowired protected CategoryService categoryService; public CategoryTypeAdapter() { } @Override public String marsh

我的应用程序需要
jaxbxmladapter
的实例,例如

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);
    }
}
公共类CategoryTypeAdapter扩展了XmlAdapter{
@自动连线
受保护类别服务类别服务;
公共类别TypeAdapter(){
}
@凌驾
公共字符串封送处理(类别v)引发异常{
返回值(v==null)?null:v.getId();
}
@凌驾
公共类别解组(字符串v)引发异常{
//努普
if(StringUtils.isBlank(v)){
返回null;
}
//通过服务加载
返回此.categoryService.getCategory(v);
}
}
问题:如何配置Spring的
Jaxb2RootElementHttpMessageConverter
,以便在适当的mashaller中设置此适配器


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

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

public class MyRootElement{

   @XmlJavaTypeAdapter(CategoryTypeAdapter.class)
   private Category category;

}

现在的问题是如何将
CategoryService
注入
CategoryTypeAdapter
,有几种方法可以将Spring依赖注入非Spring托管对象,如果您有AspectJ基础设施,最简单的方法可能是在适配器上使用
@可配置的
注释。

干杯,我会试试的。我已经更改了适配器,以便在categoryservice为null的情况下仅返回一个设置了id的空Category实例。在解析之后,我用真正的mckoy替换这些伪类别实例