Spring Boot 與傳統項目最大的區別是,傳統項目都是打成 WAR 包部署到服務器上面,需要額外的 Servlet 容器, 而 Spring Boot 則可以直接打成 jar 包,並內置集成了 Servlet 容器,通過命令 java -jar xx.jar
則可以直接運行,不需要獨立的 Servlet 容器。
打成可執行 jar 包后,我們來看下其中的 META-INF/MANIFEST.MF
文件。
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: admin
Start-Class: cn.javastack.MyApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 2.0.4.RELEASE
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_151
Main-Class: org.springframework.boot.loader.JarLauncher
其中有一個 Start-Class
便是這個 jar 包的入口類,這個入口類推薦是放在一個項目的頂層包中,其他所有的類都放在其子包下面,目錄結構如以下所示。
cn
+- javastack
+- MyApplication.java
|
+- customer
| +- Customer.java
| +- CustomerController.java
| +- CustomerService.java
| +- CustomerRepository.java
|
+- order
+- Order.java
+- OrderController.java
+- OrderService.java
+- OrderRepository.java
這個目錄結構是主流及推薦的做法,而在主入口類上加上 @SpringBootApplication
注解來開啟 Spring Boot 的各項能力,如自動配置、組件掃描等。
package cn.javastack.MyApplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
如果你不想這么做,你也可以充分利用 @EnableAutoConfiguration
和 @ComponentScan
注解自定義你的行為,不過這不是推薦的做法。
更多干貨推薦
2.史上最強 Spring Boot & Cloud 教程整理
更多請掃描下方的二維碼關注我們的微信公眾號,干貨每日推送!