java - 无法使用 Spring Boot 提供静态资源

标签 java spring-boot gradle

我有一个 Sprint Boot Gradle 应用程序,其结构如下: Screenshot of project structure

项目结构

/build.gradle
/src/main/resources/static/css/default.css
/src/main/java/com/expensalyze/ExpensalyzeApplication.java
/src/main/java/com/expensalyze/web/TagController.java

基本上我的CSS文件位于src/main/resources/static/css/default.css。我希望在 http://localhost:8080/css/default.css 获取此文件。

根据this link还有spring boot docs ,上面的设置就是所需要的。但是当我尝试访问 http://localhost:8080/css/default.css

时,我收到 404

build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.0.2.RELEASE'
}

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web:2.0.2.RELEASE')
}

ExpensalyzeApplication.java

@SpringBootApplication
@EnableWebMvc
@ComponentScan(basePackages = "com.expensalyze")
public class ExpensalyzeApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExpensalyzeApplication.class, args);
    }
}

TagController.java

@Controller
public class TagController {
    @RequestMapping("/tag") // This works properly
    @ResponseBody
    String tag() {
        return "tag";
    }
}
  • 我没有添加任何显式资源映射配置代码。
  • 我的 Controller 方法映射工作正常

可以找到重现该问题的最低限度代码 here在分支static-res-test中。您可以通过以下步骤运行该项目(需要 JDK 8):

$ ./gradlew clean build
$ java -jar build/libs/expensalyze.jar

如果您访问http://localhost:8080/tag它有效,但如果您访问 http://localhost:8080/css/default.css没有找到!

我错过了什么?

最佳答案

永远不要在启动应用程序中使用 EnableWebMvc。它删除了 Spring boot 完成的所有 MVC 自动配置,并且 puts you in charge of everything .

关于java - 无法使用 Spring Boot 提供静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50549315/

相关文章:

Java 将字符串拆分为 Double[ ]

java - 设置 X 和 Y 坐标时按钮单击事件不起作用

java - IntelliJ Idea 2016.1 不读取应用程序属性

gradle - Gradle:主要来源集取决于其他来源集吗?

android - 您可以从命令行检查项目的 Android Gradle 插件版本吗?

java - 如何在Jtable中制作多行单元格

java - 有没有办法避免构造函数传递类?

spring - 什么是与Spring Data Elasticsearch 3.1.4一起使用的正确Elasticsearch版本

java - 我们如何使用Spring Boot将jsp文件中的表单数据保存到数据库中?

gradle - 重新运行测试时删除过时的测试输出