Spring Boot項目可以制作成jar包和war包,其目錄結構是不一樣的,具體的如下所示:
1、war包目錄結構分析
WAR(Web Archivefile)網絡應用程序文件,是與平台無關的文件格式,它允許將許多文件組合成一個壓縮文件。
WAR包標准目錄結構:
說明:
1、index.jsp[可選]
2、METAINF[MAVEN自動生成目錄]
3、WEB-INF[必含]
①classes目錄:存放Java類文件
②lib目錄:所需要的jar包
③web.xml:war的描述文件
4、subdirectories[可選目錄]
存放一些網頁和照片,如:html,jsp,js,jpg等等。
2、jar包目錄結構分析
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方法。
參考鏈接:https://blog.csdn.net/chao821/article/details/88650674