java / expert
Snippet
Complex Data Transformation with GenericConverter
GenericConverter is the most flexible interface in Spring's conversion system. Unlike simple converters, it provides TypeDescriptors, enabling logic that depends on generic type information or field annotations, crucial for complex data binding.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class CollectionToReportConverter implements GenericConverter {@Overridepublic Set<ConvertiblePair> getConvertibleTypes() {return Collections.singleton(new ConvertiblePair(Collection.class, Report.class));}@Overridepublic Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {Collection<?> list = (Collection<?>) source;// Sophisticated logic using TypeDescriptor to inspect generic parametersreturn new Report(list.size(), sourceType.getElementTypeDescriptor().getType());}}
spring
Breakdown
1
getConvertibleTypes()
Defines the supported source-to-target mapping pairs for this converter.
2
sourceType.getElementTypeDescriptor()
Allows inspection of the generic component type (e.g., T in List<T>) for advanced mapping logic.