Resolving a Generic Type with Spring Framework
In the case of generic beans sometimes you need to get the generic type value for some specific reasons. A typical example could be parsing some data into the type.
Following code shows you how to parse a JSON data into the specific structure defined by a generic class.
import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.core.GenericTypeResolver; // ... @Component public class MyBean<T extends MySuperBean> { private final Class<T> genericType; private final ObjectMapper mapper = new ObjectMapper(); public MyBean() { this.genericType = (Class<T>) GenericTypeResolver .resolveTypeArgument(getClass(), MyBean.class); } public T parseData(String json) { return mapper.readValue(json, this.genericType); } }
Spring tool GenericTypeResolver
will set the genericType
class value which is later used as the parameter for the JSON parsing.
Happy resolving!