Spring 3 MVC и пример XML

Spring 3 MVC и пример XML

Весной 3 одна из функций «http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-annotation-driven[mvc:annotation- Управляемый] «, это поддержка для преобразования объекта в / из XML-файла, если JAXB находится в classpath проекта.

В этом руководстве мы покажем вам, как преобразовать возвращаемый объект в формат XML и вернуть его обратно пользователю через среду Spring @MVC.

Используемые технологии:

  1. Весна 3.0.5. ВЫПУСК

  2. JDK 1.6

  3. Затмение 3.6

  4. Maven 3

JAXB in JDK6
JAXB включен в JDK6, поэтому вам не нужно включать библиотеку JAXB вручную, пока объект аннотируется аннотацией JAXB, Spring автоматически преобразует его в формат XML.

1. Зависимости проекта

Никаких дополнительных зависимостей, вам нужно включить Spring MVC только в свой Mavenpom.xml.

    
        3.0.5.RELEASE
    

    

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        

    

2. Модель + JAXB

Простая модель POJO, помеченнаяJAXB annotation, позже преобразует этот объект в выходные данные XML.

package com.example.common.model;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "coffee")
public class Coffee {

    String name;
    int quanlity;

    public String getName() {
        return name;
    }

    @XmlElement
    public void setName(String name) {
        this.name = name;
    }

    public int getQuanlity() {
        return quanlity;
    }

    @XmlElement
    public void setQuanlity(int quanlity) {
        this.quanlity = quanlity;
    }

    public Coffee(String name, int quanlity) {
        this.name = name;
        this.quanlity = quanlity;
    }

    public Coffee() {
    }

}

3. контроллер

Добавьте «@ResponseBody» в значение, возвращаемое методом, без подробностей вSpring documentation.

Как я знаю, когда весна увидится

  1. Объект с комментариями JAXB

  2. Библиотека JAXB существовала в пути к классам

  3. «Mvc: на основе аннотаций» включен

  4. Метод возврата с аннотацией @ResponseBody

Он будет обрабатывать преобразование автоматически.

package com.example.common.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.example.common.model.Coffee;

@Controller
@RequestMapping("/coffee")
public class XMLController {

    @RequestMapping(value="{name}", method = RequestMethod.GET)
    public @ResponseBody Coffee getCoffeeInXML(@PathVariable String name) {

        Coffee coffee = new Coffee(name, 100);

        return coffee;

    }

}

4. MVC: аннотация привод

В одном из ваших XML-файлов конфигурации Spring включите «mvc:annotation-driven».



    

    

Note
В качестве альтернативы вы можете объявить зависимость «spring-oxm.jar» и включить следующийMarshallingView для обработки преобразования. При использовании этого метода аннотировать@ResponseBody в методе не требуется.


    

    
        
          
            
                
                    com.example.common.model.Coffee
                
            
          
        
    

Скачать исходный код

Скачать -SpringMVC-XML-Example.zip (7 КБ)