我正在尝试使用Spring Data Rest为Converter
对Entity
对象实现自定义Resource
,但从不调用转换器。
我正在关注this documentation:
但是,如果您的项目需要以不同的格式输出, 可以完全替换默认的传出JSON 用你自己的代表。如果您注册自己的 ApplicationContext中的ConversionService并注册您自己的 转换器,然后你可以返回一个资源 实施您的选择。
这就是我试图做的事情。
我有一个@Configuration
类,使用此方法扩展RepositoryRestMvcConfiguration
:
@Configuration
@EnableWebMvc
@EnableHypermediaSupport(type = HypermediaType.HAL)
public class RepositoryBaseConfiguration extends RepositoryRestMvcConfiguration {
@Override
public DefaultFormattingConversionService defaultConversionService() {
return super.defaultConversionService();
}
}
我有一个扩展RepositoryRestConfigurerAdapter
的类,具有此实现:
@Configuration
public class RepositoryBaseConfigurerAdapter extends RepositoryRestConfigurerAdapter {
@Override
public void configureConversionService(ConfigurableConversionService conversionService) {
if(!conversionService.canConvert(Entity.class, Resource.class))
conversionService.addConverter(new EntityConverter());
super.configureConversionService(conversionService);
}
}
这两个类的两个方法都被正确调用和管理,所以很自然地认为转换器已在应用程序上下文中注册...
这是我的自定义转换器EntityConverter:
@Component
public class EntityConverter implements Converter<Entity, Resource> {
@Override
public Resource convert(Entity source) {
System.out.println("method convert of class EntityConverter");
return null;
}
}
Spring Data Rest永远不会调用“convert”方法。
有什么不对/遗失?
提前致谢。