Spring Boot项目能够制做成jar包和war包,其目录结构是不同的,具体的以下所示:html
WAR(Web Archivefile)网络应用程序文件,是与平台无关的文件格式,它容许将许多文件组合成一个压缩文件。web
WAR包标准目录结构:spring
说明:bootstrap
一、index.jsp[可选]网络
二、METAINF[MAVEN自动生成目录]jsp
三、WEB-INF[必含]spa
①classes目录:存放Java类文件xml
②lib目录:所须要的jar包htm
③web.xml:war的描述文件blog
四、subdirectories[可选目录]
存放一些网页和照片,如:html,jsp,js,jpg等等。
example.jar
|
+-META-INF
| +-MANIFEST.MF
+-org
| +-springframework
| +-boot
| +-loader
| +-<spring boot loader classes>
+-BOOT-INF
+-classes
| +-mycompany
| +-project
| +-YourClasses.class
+-lib
+-dependency1.jar
+-dependency2.jar
说明:
SpringBoot提供的bootstrap的类是放到包的最外面,好比上面的org.springframework.boot.loader。
应用程序的代码则是须要放到BOOT-INF/classes目录下面;而后应用程序依赖的其余的jar包文件须要放到BOOT-INF/lib目录下。 当这个jar做为standardalone的程序运行时(没有放到container),SpringBoot会在生成的META-INF/MANIFEST.MF里面将Main-Class设置成org.springframework.boot.loader.JarLauncher,JarLauncher类会建立一个spring本身的ClassLoader: LaunchedURLClassLoader, 这个classloader 会就能经过URL来加载上面BOOT-INF/lib里面所依赖的包,而且经过反射Manifest里面的Start-Class里面定义的类,而后invoke这个类里面的main方法。