We’ve been talking about the new Jsoup Annotations feature in NixMash Spring which takes a POJO as a Generic Type and returns parsed Jsoup values for the annotated properties. The Jsoup Annotation Parser makes a great example for us on how to wire-up a Class with Generic Types as a Spring Bean.
Let’s start by looking at the Jsoup Annotation Parser as our base class.
We have a POJO class named PagePreviewDTO. We’ll be passing a Jsoup Document to the JSoupHtmlParser.parse() method and return a populated POJO like this.
PagePreviewDTO pagePreviewDTO = pagePreviewParser.parse(doc);
pagePreviewParser is our Spring Bean, so the question is, how do we create THAT?
We first create a class which extends our JSoupHtmlParser base class, using our POJO as Generic Type parameter.
Now we have something we can work with in Spring! Let’s move to our Spring @Configuration class where we configure the PagePreviewParser class we just created as a @Bean. Notice that we do not annotate our extended PagePreviewParser class above (or the base JSoupHtmlParser class) as a Spring @Component.
Now we can create an instance of the bean based on its name pagePreviewParser() and add the Spring @Qualifier annotation which matches its name.
Time to parse and populate with our Spring Bean!
Here’s another good reference on this topic from Javabeat if you want to read more.