java - mvc - Spring Boot Controller 404
spring boot static resources not found (1)
Soy bastante nuevo en Spring Boot e intento crear una aplicación web simple. He definido una clase de controlador que contiene mi asignación para url, pero en el navegador me está dando un error de página de etiqueta blanca (404). No puedo entender por qué no es capaz de mapear. He intentado cambiar mi paquete base de exploración de componentes, pero todavía no me redirige a la página "abc" o imprimir "en el controlador" en la consola.
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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>bms</groupId>
<artifactId>com.wellmanage.bms</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>BMS</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Clase de controlador
package com.wellmanage.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class BookController {
@RequestMapping("/")
public String hello() {
System.out.println("in controller");
return "abc";
}
}
Clase principal
package com.wellmanage.bms;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BmsApplication {
public static void main(String[] args) {
SpringApplication.run(BmsApplication.class, args);
}
}
La clase BmsApplication
se ubica debajo del paquete com.wellmanage.bms
y, de forma predeterminada, la anotación @SpringBootApplication
ejecuta el análisis de componentes usando este paquete como raíz. Dado que BookController
está dentro de com.wellmanage.controller
, el paquete se omite por configuración predeterminada.
Tienes dos opciones:
- Cambie la configuración predeterminada de escaneo de componentes y establezca qué paquete desea escanear:
@ComponentScan("com.wellmanage")
@SpringBootApplication
public class BmsApplication {
public static void main(String[] args) {
SpringApplication.run(BmsApplication.class, args);
}
}
- Mueva la clase de aplicación principal al paquete raíz de su aplicación para que todos los componentes que desee escanear automáticamente estén bajo su paquete, por ejemplo, para
com.wellmanage
.
Desde la configuración que ha publicado, parece que no configuró ningún motor de plantillas. Por lo tanto, se ignora devolver el String "abc" de su controlador.