Spring Web-mvc 不适用于 Spring Boot [Spring cloud]
Posted
技术标签:
【中文标题】Spring Web-mvc 不适用于 Spring Boot [Spring cloud]【英文标题】:Spring Web-mvc not working with Spring Boot[Spring cloud] 【发布时间】:2018-04-19 00:12:33 【问题描述】:我是微服务新手。我使用 Spring 创建了一个微服务应用程序。我正在使用“spring-cloud-starter-eureka-server”。我总共有 3 个模块:
微服务cldm 账户微服务 webclient-microservice-server在下面找到它们的主要类:
@EnableEurekaServer
@SpringBootApplication
public class MicroservicecldmApplication
public static void main(String[] args)
SpringApplication.run(MicroservicecldmApplication.class, args);
@EnableDiscoveryClient
@SpringBootApplication
@ComponentScan(basePackages="com.wmsdm.cloud")
public class WebclientMicroserviceServerApplication
public static void main(String[] args)
SpringApplication.run(WebclientMicroserviceServerApplication.class, args);
在 application.properties 我有以下条目:
spring.application.name=WebclientMicroserviceServerApplication
eureka.client.serviceUrl.defaultZone:http://localhost:9091/eureka/
server.port=9993
eureka.instance.lease-renewal-interval-in-seconds=80
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
spring.mvc.static-path-pattern=/resources/**
我有一个 AccountController 类如下:
@Controller
public class AccountController
@RequestMapping(value = "/account", method = RequestMethod.GET)
public String viewAccount()
return "accountSummary";
我的 /WEB-INF/view
路径中有 accountSummary.jsp 页面。此外,在 maven 的 pom.xml 中,我有以下依赖项以及其他依赖项:
<groupId>com.wmsdm.cloud</groupId>
<artifactId>webclient-microservice-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>webclient-microservice-server</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR4</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</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.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>$spring-cloud.version</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
尽管有这些,当我点击 URL 时:
http://localhost:9993/WebclientMicroserviceServerApplication/account
我收到错误No mapping found for the requested uri
【问题讨论】:
【参考方案1】:我建议使用spring-boot-starter-web
而不是tomcat-embed-jasper
。您可以在 pom.xml
中使用多个启动器。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
请参阅spring.io 了解更多信息。
【讨论】:
为 web 模块添加了整个 pom.xml【参考方案2】:确保上下文组件扫描基础包正确。如果未指定,请使用正则表达式。
【讨论】:
@ComponentScan(basePackages="com.wmsdm.cloud") 正如我所发布的那样已经添加了。此外,所有的类都在同一个包下。所以,根据 spring boot @SpringBootApplication 注释将扫描。 @Arun 这不是 eureka 或任何 Netflix 工具的问题。它的问题是 spring 找不到@component
s 或任何注释
当内部tomcat启动时,我发现它已经扫描了@RequestMapping("/account")。我在eclipse控制台@Arun中看到了信息消息
nWebAppInitializer
的URL映射是什么?以上是关于Spring Web-mvc 不适用于 Spring Boot [Spring cloud]的主要内容,如果未能解决你的问题,请参考以下文章
Gradle 如何配置构建文件以从同一项目创建 Spring boot jar 和 spring web-mvc war
org.springframework.beans.factory.UnsatisfiedDependencyException 使用 Spring web-mvc 5.0.1.RELEASE 和 H
使用 JMH 对 Spring Boot 应用程序进行基准测试