Spring Boot ViewControllerRegistry tutorial
last modified July 6, 2020
Spring Boot ViewControllerRegistry tutorial shows how to use ViewControllerRegistry to create simple routes.
Spring is a popular Java application framework for creating enterprise applications. Spring Boot is an evolution of Spring framework which helps create stand-alone, production-grade Spring based applications with minimal effort.
ViewControllerRegistry
ViewControllerRegistry
allows to create simple automated controllers pre-configured
with status code and/or a view.
Spring Boot ViewControllerRegistry example
In the following example we create a simple route with ViewControllerRegistry
.
pom.xml src ├───main │ ├───java │ │ └───com │ │ └───zetcode │ │ │ Application.java │ │ └───config │ │ AppConfig.java │ └───resources │ ├───static │ │ index.html │ └───templates │ hello.html └───test └───java
This is the project structure.
<?xml version="1.0" encoding="UTF-8"?> <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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zetcode</groupId> <artifactId>viewregistry</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Spring Boot starters are a set of convenient dependency descriptors which greatly simplify
Maven configuration. The spring-boot-starter-parent
has some common configurations
for a Spring Boot application. The spring-boot-starter-web
is a starter for
building web, including RESTful, applications using Spring MVC. It uses Tomcat as the default
embedded container. The spring-boot-starter-thymeleaf
is a starter for
building MVC web applications using Thymeleaf views.
The spring-boot-maven-plugin
provides Spring Boot support in Maven, allowing us
to package executable JAR or WAR archives. Its spring-boot:run
goal runs the
Spring Boot application.
package com.zetcode.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class AppConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/hello").setViewName("hello"); } }
In the AppConfig
we register a new route with ViewControllerRegistry's
addViewController()
method.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello page</title> </head> <body> <p> Hello there </p> </body> </html>
The hello.html
view displays a simple message.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Home page</title> </head> <body> <p> This is home page. Go to <a href="hello">hello page</a> </p> </body> </html>
This is a home page.
package com.zetcode; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
The Application
sets up the Spring Boot application.
The @SpringBootApplication
enables auto-configuration and
component scanning.
$ mvn spring-boot:run
After the application is run, we can navigate to localhost:8080/
.
In this tutorial, we have showed how to use Spring ViewControllerRegistry
to create simple routes.