Importing XML configuration in Spring Boot

Spring Boot recommends Java-based configuration. However, it is possible to load beans from XML sources.

The best practice is to put all configuration in a single class. Usually the class with main method is considered best to put all configuration and is annotated with @Configuration.

Additional configuration resources from XML can be imported using @ImportResource annotation.


Let us now see this with the help of an example. Following is the class with main method. Note the use of @ImportResource annotation used to load configuration from beans.xml file which exists in classpath.

package com.learnitweb.XMLImportDemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

public class XmlImportDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(XmlImportDemoApplication.class, args);

Following is the beans.xml file which is in classpath of our application.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	<bean id="employee" class="com.learnitweb.XMLImportDemo.bean.Employee">

To check if the bean is loaded from XML file, we’ll create a simple controller and use it to return the Employee.

package com.learnitweb.XMLImportDemo.rest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.learnitweb.XMLImportDemo.bean.Employee;

public class TestController {
	Employee employee;

	@RequestMapping(value = "/test", method = RequestMethod.GET)
	public Employee getCoupon() {
		return employee;

Following is the code of Employee class:

package com.learnitweb.XMLImportDemo.bean;

public class Employee {
	String name = "John";

	public String getName() {
		return name;

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

	public String toString() {
		return "Employee [name=" + name + "]";

We can access the application by accessing http://localhost:8080/test. The output will be:



In this short tutorial, we discussed how to XML configuration in Spring Boot. However, we should avoid this as Spring Boot recommends Java-based configuration. So we should do this only when it is absolute necessary.