Reputation: 113
I try to print Hello World, however I got the error Cannot resolve MVC view "Hello World". If I change @Controller to @RestController, then it works. But I don't understand what it has does with the ResponseBody. Many thanks.
Controller class
@Controller
public class HelloResource {
@RequestMapping({"/hello"})
public String hello() {
System.out.println("hello world");
return "Hello World";
}
}
pom.xml
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>JWTDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>JWTDemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Upvotes: 0
Views: 2890
Reputation: 788
If you annotate with @Controller then try to check is there any view available with the template folder if not it will return an error.
if you would like to return any String value then as follow.
@Controller
public class HelloResource {
@RequestMapping({"/hello"})
@ResponseBody
public String hello() {
System.out.println("hello world");
return "Hello World";
}
}
If you would like to return the only JSON for API's then follow with @RestController as below.
@RestController
public class HelloResource {
@RequestMapping({"/hello"})
public String hello() {
System.out.println("hello world");
return "Hello World";
}
}
Upvotes: 3