0 day streak
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 {
@Override
public Set<ConvertiblePair> getConvertibleTypes() {
return Collections.singleton(new ConvertiblePair(Collection.class, Report.class));
}
@Override
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
Collection<?> list = (Collection<?>) source;
// Sophisticated logic using TypeDescriptor to inspect generic parameters
return 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.