Spring boot 项目目录结构
1、IDEA中目录结构:
2、编译后项目目录:
- META-INF
- WEB-INF
- classes
- com.xu.common
- resources
- static
- application.yml
- lib
- index.html
- web.xml
- classes
- WEB-INF2
- wstatic
- index.html
3、IDEA和编译后目录对比图:
4、目录对照解释说明(个人理解):
1、项目编译时会查找项目中main/webapp目录,然后将webapp目录下所有文件和文件夹全量拷贝到编译后项目根目录下,如果找不到该目录,只默认创建META-INF和WEB-INF2个目录
2、main/java目录下java文件编译成class文件,放到WEB-INF/classes目录
3、main/resources目录文件全量拷贝到WEB-INF/classes目录
4、项目引入的第三方jar包,全量拷贝到WEB-INF/lib目录下
5、除maven打包特殊指定外,其他位置的文件,一律丢弃
5、各层级文件夹指定(以编译后的项目文件夹来描述):
1、配置文件
比如application.yml文件
classpath:/static表示/WEB-INF/classes/static
classpath:/resources表示/WEB-INF/classes/resources
2、java代码访问
3、静态文件访问
6、部署到Tomcat后浏览器访问方式
1、非WEB-INF目录外文件可以直接访问
部署到Tomcat可以直接浏览器访问,但是IDEA直接启动的spring boot服务是不能访问的
2、WEB-INF目录下文件需要做静态配置
application.yml中增加如下配置:
spring:
resources:
static-locations: classpath:/static,classpath:/resources
spring.resources.static-locations 的默认值是:classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
也就是说,如果是如上4个文件夹内的静态资源,不用到application.yml中配置也可以访问
7、其他小知识
classpath 和 classpath* 区别:
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.