springboot编译以及路径总结

本文解析了SpringBoot中静态资源及映射路径的加载顺序,揭示了如何配置静态资源位置,以及不同文件夹下静态资源的访问特性,强调了public文件夹的特殊性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Question 1

  • springboot 存在静态资源以及映射的路径mapping,那么访问该路径优先加载哪个呢?

    answer: springboot先匹配mapping路径,如果mapping不存在该映射路径,那么再查找该路径的静态资源,如果不存在,那么返回404页面。由于该方法加了@ResponseBody注解,如下返回了 “hello字符串”,而并没有返回 静态资源 “java.txt”的内容。

    在这里插入图片描述

  • springboot 默认扫描如下路径的静态资源

classpath:/static 
classpath:/public 
classpath:/resources 
classpath:/META-INF/resources

也可以通过 在properties文件下自己指定

spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/

这个的classpath是什么意思呢?就是classes文件夹的根目录。

一般我们在创建Myeclipse工程的时候,原则上是可以创建起任意名的文件夹,如图

在这里插入图片描述

只要你在java Build Path选项下包含你创建的文件夹即可,它就会被编译器编译到classes目录。不过为了规范起见,大家创建资源文件夹的名还是要规范一点的。

在这里插入图片描述

上述工程目录编译过程详解:

​ 首先呢,所有自己创建的文件夹(包括resources)下的所有文件都会被放在classes根目录,如果你创建的文件夹下,还有子文件夹,那么他会把子文件夹一起复制到classes根目录,例如; 我创建了public目录,那么我的classes目录下会有resources文件夹以及public目录下的structs2.txt文件。

  • 如果创建的两个文件夹 都有个同名的子文件夹,那么编译后会怎样?

    ​ answer:那么资源都会汇总在classes/子文件夹/

  • 如果两个相同子文件夹下有两个相同名的静态文件,那么编译后会怎么样?

    ​ answer:这种情况,编译器会把最新的文件放置该文件夹下,也就是说哪个文件是最新修改的那么就把哪个文件放入那个编译后的子文件夹里。当然,为了保险起见,最好不要这么做,起两个名字也不是什么难事吧~。

结语:

​ 还要说明的是,本次测试发现一点神奇的地方,就是public文件夹
下的静态资源,即使不在public/resources/下的文件,在public文件夹放任意静态资源或者创建子文件夹以及在子文件夹下的静态资源,都可以随意访问,而对于其他的文件夹下的静态资源却不能直接访问(如下图的static文件夹的dd.txt,由于没有放在resources下所以访问不到),需要配置把那些静态资源放在他的子文件夹 resources下就可以访问了。同时我看出了public文件夹的特殊性。我想这应该就涉及到springboot底层的设计思想了。有时间研究springboot源码。
在这里插入图片描述

### 设置和下载Spring Boot编译环境 为了设置并下载用于编译Spring Boot项目的环境,需确保安装了合适的Java Development Kit (JDK)版本和支持工具如Maven或Gradle。对于JDK的选择,在创建新项目时应确认所使用的JDK版本与目标Spring Boot版本兼容。 #### 安装JDK 针对特定IDE(例如IntelliJ IDEA),可以通过菜单`File -> Settings`来调整项目的字节码版本,从而匹配所需的JDK版本[^5]。这一步骤至关重要,因为不同的Spring Boot版本可能依赖于不同版本的JVM特性。当前推荐使用较新的LTS版OpenJDK作为基础运行环境。 #### 下载并配置构建工具 大多数Spring Boot应用程序利用Maven或Gradle来进行依赖管理和构建流程自动化。可以从官方网站获取这些工具,并按照官方文档完成本地安装。对于Maven而言,通常只需解压二进制分发包至任意目录,并将`bin`路径加入系统的PATH变量即可;而对于Gradle,则有提供Windows安装器或者可以借助SDKMAN!这样的多版本管理工具轻松切换不同版本。 #### 获取Spring Boot Starter Project 最简便的方式是访问[start.spring.io](https://start.spring.io/)网站在线生成初始项目结构。这里可以选择所需的技术栈组件和服务端口等选项,之后会得到一个压缩包形式的基础工程模板。此方法内置了许多常用的starter dependencies,有助于加速开发进程。 #### IDE集成 一旦上述准备工作完毕,建议导入新建的Spring Boot项目到支持良好插件生态系统的IDE中继续工作。像Eclipse STS(Spring Tool Suite),JetBrains IntelliJ IDEA Ultimate Edition都提供了优秀的Spring Boot支持体验,包括但不限于自动补全、实时错误提示等功能。 ```bash # 更新maven仓库索引以同步最新发布的库文件 mvn clean install -U ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值