2

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);
    }
}

Jaxb2RootElementHttpMessageConverter質問:このアダプターを適切な mahaller に設定するように Spring を構成するにはどうすればよいですか?

Spring OXM ライブラリーがあることは知っていますが、OXM クラスをアノテーション駆動の REST コントローラーと一緒に使用する方法が明確ではありません。

4

1 に答える 1

3

XmlAdapter を Spring のメッセージ コンバーターに関連付けることはできません。代わりに、通常の JAXB メカニズムを使用して、この XmlAdapter を必要なタイプに登録します。

public class MyRootElement{

   @XmlJavaTypeAdapter(CategoryTypeAdapter.class)
   private Category category;

}

CategoryServiceintoに注入する方法の問題です。SpringCategoryTypeAdapter依存関係を非 Spring 管理オブジェクトに注入する方法はいくつかあります。AspectJ インフラストラクチャがある場合、おそらく最も簡単なのは@Configurable、アダプターでアノテーションを使用することです。

于 2012-10-08T22:02:34.227 に答える