Search code examples
javaspringspring-mvcjaxb2

Injecting Jaxb2Marshaller in Spring MVC controller


I am trying to convert a static xml into a POJO (unmarshalling) in my controller class. I am using Jaxb2Marshaller and I am configuring in the following way in my root context

<oxm:jaxb2-marshaller id="marshaller">
    <oxm:class-to-be-bound name="org.springframework.ws.samples.airline.schema.Airport"/>        
</oxm:jaxb2-marshaller>

I am trying to inject the marshaller using autowiring. But it throws No Bean Found Exception.

@AutoWired
private Unmarshaller marshaller;

How to inject the marshaller in the controller. Any other ways or pointing out the error in my code will be helpful?


Solution

  • Spring context configuration

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context"
            xmlns:automation="http://www.springframework.org/schema/automation"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:oxm="http://www.springframework.org/schema/oxm"
            xmlns:task="http://www.springframework.org/schema/task"
            xsi:schemaLocation="http://www.springframework.org/schema/beans 
                                http://www.springframework.org/schema/beans/spring-beans.xsd
                                http://www.springframework.org/schema/util 
                                http://www.springframework.org/schema/util/spring-util.xsd
                                http://www.springframework.org/schema/context 
                                http://www.springframework.org/schema/context/spring-context.xsd
                                http://www.springframework.org/schema/automation
                                http://www.springframework.org/schema/automation/automation.xsd
                                http://www.springframework.org/schema/task 
                                http://www.springframework.org/schema/task/spring-task.xsd
                                http://www.springframework.org/schema/oxm
                                http://www.springframework.org/schema/oxm/spring-oxm.xsd">
    
            <context:annotation-config/>
    
            <oxm:jaxb2-marshaller id="jaxb2Marshaller">
                <oxm:class-to-be-bound name="your.package.Prova" />
            </oxm:jaxb2-marshaller>
    
        </beans>
    

    Class

    @AutoWired
    private org.springframework.oxm.Unmarshaller jaxb2Marshaller;