具体区别表现可见:SpringBoot项目打成jar与war的区别
为什么src/main/resources下的静态资源要被编译进入项目名\target\classes才能被外部访问,而src/main/webapp下的静态资源,无需编译到项目名\target\classes可以直接被访问到??
src/main/resources:放代码:
/**
* Create a new DefaultResourceLoader.
* <p>ClassLoader access will happen using the thread context class loader
* at the time of this ResourceLoader's initialization.
* @see java.lang.Thread#getContextClassLoader()
*/
public DefaultResourceLoader() {
this.classLoader = ClassUtils.getDefaultClassLoader();
}
这段代码,是Spring获得自己的 默认资源加载器 的过程,我们还知道Spring提供了ResourceHttpRequestHandler来配置src/main/resources(classpath)下指定访问目录,而DefaultResourceLoader(默认的资源加载器)本质上就是DefaultClassLoader(默认的类加载器),而类加载器主要是针对**.class文件的路径,所以此时我们可以理解:为什么src/main/resources(classpath)的静态资源也需要编译到classes目录下?
src/main/webapp:
对于webapp我们似乎更容易理解,它主要是通过servlet container的ContextPath来确定资源在文件系统中的位置,然后使用如下API从文件系统中获取对应资源:
版权声明:本文为qq_32331073原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。