在尝试渲染jsp文件时,我正在通过spring boot返回404。我的maven配置有spring-boot-starter-parent版本1.4.0.RELEASE作为版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
我正在运行嵌入式Tomcat servlet容器。
我发现此帖子spring-boot basic JSP 404 Not Found并在我的spring.mvc.view.prefix
文件中设置了必需的spring.mvc.view.suffix
和application.properties
属性。
仍然是404s。
然后我发现了这个SO帖子spring-boot-not-finding-jsp-pages-in-war-file,并在我的pom
文件中添加了必要的依赖项:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
仍然是404s。
在删除<scope>provided</scope>
标记后,一切都开始起作用了。认为这个标签可能导致弹簧启动的不同类路径并因此打开了不同的功能,我使用--debug
打开了弹簧启动配置报告,并使用scope
标签来区分输出。没有区别。两者在Positive matches
部分中都有以下行:
WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter#defaultViewResolver匹配 - @ConditionalOnMissingBean(types:org.springframework.web.servlet.view.InternalResourceViewResolver; SearchStrategy:all)找不到bean(OnBeanCondition)
任何人都可以解释为什么它没有provided
范围吗?