प्रश्न लगभग पुराना है, मुझे नहीं पता कि आपको पहले से ही समाधान मिल गया है या नहीं।
कहीं भी, यदि आप वसंत द्वारा उपयोग किए गए कन्वर्टर्स को प्रतिस्थापित करने वाले दो कस्टम कन्वर्टर्स बनाते हैं तो आप एक पूरी तरह से कस्टम एएलपीएस प्रोफाइलिंग जानकारी बना सकते हैं।
पहले व्यक्ति को कनवर्टर org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter
विस्तारित करने की आवश्यकता है।
यहाँ एक संभव कार्यान्वयन:
public class CustomAlpsJsonHttpMessageConverter extends AlpsJsonHttpMessageConverter {
public CustomAlpsJsonHttpMessageConverter(RootResourceInformationToAlpsDescriptorConverter converter) {
super(converter);
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
return super.canWrite(clazz, mediaType);
}
@Override
public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) {
return super.canRead(type, contextClass, mediaType);
}
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request,
ServerHttpResponse response) {
return super.beforeBodyWrite(body, returnType, selectedContentType, selectedConverterType, request, response);
}
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
if (converterType.equals(AlpsJsonHttpMessageConverter.class))
return true;
else if (converterType.equals(CustomAlpsJsonHttpMessageConverter.class))
return true;
else return false;
}
}
दूसरा एक की जरूरत है कनवर्टर org.springframework.data.rest.webmvc.alps.RootResourceInformationToAlpsDescriptorConverter
फैली हुई है।
RootResourceInformationToAlpsDescriptorConverter
में केवल दो सार्वजनिक संसाधन हैं: कन्स्ट्रक्टर और "कन्वर्ट" विधि।
यदि आप कस्टम व्यवहार करना चाहते हैं तो आप उस वर्ग के प्रत्येक निजी क्षेत्र/विधि को ओवरराइट कर सकते हैं।
वेतन ध्यान कि "का समर्थन करता है" अपने CustomAlpsJsonHttpMessageConverter
की विधि की आवश्यकता होगी अपने नए CustomAlpsJsonHttpMessageConverter
वर्ग के साथ दिए गए "converterType" मेल खाता है।
आप बस अपने CustomRootResourceInformationToAlpsDescriptorConverter
में यह ovverriding वर्ग RootResourceInformationToAlpsDescriptorConverter
की "कन्वर्ट" विधि अनुकूलित कर सकते हैं, उस बिंदु पर।
अंत में, आपको एप्लिकेशन संदर्भ में दो कन्वर्टर्स पंजीकृत करना होगा। ऐसा करने के लिए, आप RepositoryRestMvcConfiguration
कक्षा का विस्तार कर सकते हैं, और आपके CustomRepositoryRestMvcConfiguration
में आपको @Override
विधियों "alpsJsonHttpMessageConverter()"
और "alpsConverter()"
की आवश्यकता होगी।
भी जोड़ें दो ovverriding कस्टम तरीकों में @Bean
एनोटेशन, इस तरह:
@Bean
@Override
public AlpsJsonHttpMessageConverter alpsJsonHttpMessageConverter() {
return new CustomAlpsJsonHttpMessageConverter(alpsConverter());
}
@Bean
@Override
public RootResourceInformationToAlpsDescriptorConverter alpsConverter() {
Repositories repositories = repositories();
PersistentEntities persistentEntities = persistentEntities();
RepositoryEntityLinks entityLinks = entityLinks();
MessageSourceAccessor messageSourceAccessor = resourceDescriptionMessageSourceAccessor();
RepositoryRestConfiguration config = config();
ResourceMappings resourceMappings = resourceMappings();
return new CustomRootResourceInformationToAlpsDescriptorConverter(associationLinks(), repositories, persistentEntities,
entityLinks, messageSourceAccessor, config, objectMapper(), enumTranslator());
}
तो तुम अगर आप की जरूरत है एक पूरी तरह से कस्टम आल्प्स हो सकता है,।
मैंने कस्टम प्रोफाइलिंग लिंक बनाने के लिए इस समाधान की कोशिश की है, और यह पूरी तरह से काम करता है।
धन्यवाद! मैं इस परियोजना पर अब काम नहीं करता हूं, और इसके लिए हमने एक बाहरी दस्तावेज़ समाप्त कर दिया है, स्वयं समझाए गए एपीआई की "सुंदरता" काट रहा है वैसे भी, मैं आपके पूर्व टीमों को अंतर्दृष्टि रखने के लिए अपने उत्तर को लिंक करूंगा क्लीनर दस्तावेज पर वापस जाने के लिए क्या करना है। –