Spring boot 项目目录结构

1、IDEA中目录结构:

Spring boot 项目目录结构

2、编译后项目目录:

Spring boot 项目目录结构

  • META-INF
  • WEB-INF
    • classes
      • com.xu.common
      • resources
      • static
      • application.yml
    • lib
    • index.html
    • web.xml
  • WEB-INF2
  • wstatic
  • index.html

3、IDEA和编译后目录对比图:

Spring boot 项目目录结构

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后浏览器访问方式

Spring boot 项目目录结构

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路径)进行查找.