How to create a Spring Boot REST service with XML output

In this article, I will be explaining how to create a Spring Boot REST service that produces an XML output.

Edit

 

Project Creation and Setup

 

Step 1 – Create a new Maven Project (Refer to this blog post). This should create a project as shown below:

maven-springboot-eclipse-project

Step 2 – Add the Spring Boot and Jackson dependency. So, your the pom.xml file should be similar to the following:

<project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.learnjava</groupId>  <artifactId>learnjava-springboot-xmloutput-demo</artifactId>  <version>0.0.1-SNAPSHOT</version>  <parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>2.1.2.RELEASE</version>  </parent>  <dependencies>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-web</artifactId>    </dependency>        <dependency>            <groupId>com.fasterxml.jackson.dataformat</groupId>            <artifactId>jackson-dataformat-xml</artifactId>        </dependency>    </dependencies>    <properties>        <java.version>1.8</java.version>    </properties></project>

Writing Code

Step 3 – Create a Book class as follows:

package com.learnjava.springbootxmldemo.book;public class Book {  private int id;  private String name;  private String author;        //constructor, getters and setters}

This class represents a Book. It has fields corresponding to id, name and author.

 

Step 4 – Create a BookController class as follows:

package com.learnjava.springbootxmldemo.book;import java.util.ArrayList;import java.util.List;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class BookController {   @GetMapping(value="/books",produces = { "application/xml", "text/xml" })    public List<Book> getAllBooks(){      //Returns hardcoded data, a real world application would return from the database      List<Book> books = new ArrayList<Book>();      books.add(new Book(1,"Emma", "Jane Austen"));      books.add(new Book(2,"Harry Potter", "JK Rowling"));      books.add(new Book(3,"The Partner", "John Grisham"));      return books;    }       @GetMapping(value="/book", produces = { "application/xml", "text/xml" })    public Book getBook(){      //Returns hardcoded data, a real world application would return from the database      return new Book(1,"Emma", "Jane Austen");    } }

This is a Controller class and specifies the methods that handle client requests. . It has the RestController annotation specified.

It includes the following methods:

getAllBooks

  • The GetMapping annotation is specified on this method. This specifies that this method maps to the /books URL and that it produces an XML output
  • The method simply creates a List of type Book, adds some Book objects to it and returns it. A real-world application will typically query a database and obtain Book objects.

getBook

  • Like getAllBooks, this method has the GetMapping annotation
  • It returns a single Book object

Step 5 – Create a Main class as follows:

package com.learnjava.springbootxmldemo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Main {    public static void main(String[] args) {          SpringApplication.run(Main.class, args);      }}

This is the starting point of our Spring Boot application as explained here.

Edit

Running the application

Step 6 – Run Main.java as a Java application as shown below:

running-spring-boot-main

Step 7 – Open a browser window. Type http://localhost:8080/books/ . This displays the following XML output:

xm-output

You can download the source code for this project via the Github repository here.

Conclusion

So, in this article, we saw how to create a Spring Boot application that produces an XML output.

Comments

Popular posts from this blog

How to use logging in SpringBoot with code samples

Python While Loop with code samples

How to convert a List to a Set