首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

最小化 Spring Boot 專案構建指南:單文件啟動、自動配置原理與啟動日誌深度解讀

     編輯:Java 綜合教學

專案結構極簡主義

最小化 Spring Boot 專案目錄結構
僅需 pom.xml 與一個啟動類

核心配置:pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.0.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

關鍵點:繼承 spring-boot-starter-parent 統一依賴版本管理,引入 starter-web 伝遞依賴 Tomcat、Spring MVC、Jackson 等全套 Web 棧。

單文件啟動類:App.java

@EnableAutoConfiguration
@RestController
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String get() { return "get"; }

    @RequestMapping(value = "/post", method = RequestMethod.POST)
    public String post() { return "post"; }
}

核心注解深度解析

@EnableAutoConfiguration:自動配置總開關

  • 根據 classpath 依賴「猜測」所需 Bean 並注入 IOC 容器
  • 例:檢測到 tomcat-embedded.jar → 自動裝配 TomcatEmbeddedServletContainerFactory
  • 可通過 exclude / excludeName 排除特定自動配置類
  • 掃描根包及所有子包下的組件

@RestController = @Controller + @ResponseBody

Spring MVC 提供,直接返回數據而非視圖名,構建 RESTful 服務首選。

@RequestMapping 核心屬性

  • value:路徑映射(支持 Ant 風格)
  • method:限定 HTTP 方法(GET/POST/PUT/DELETE...)

啟動日誌全流程解讀

2016-03-11 13:58:02.399  INFO 5776 --- [main] hello.App : Starting App ...
2016-03-11 13:58:02.508  INFO 5776 --- [main] .AnnotationConfigEmbeddedWebApplicationContext : Refreshing context...
2016-03-11 13:58:05.107  INFO 5776 --- [main] .TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2016-03-11 13:58:05.673  INFO 5776 --- [ost-startStop-1] .ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2016-03-11 13:58:06.115  INFO 5776 --- [main] .RequestMappingHandlerMapping : Mapped "{[/test],methods=[GET]}" onto public java.lang.String hello.App.get()
2016-03-11 13:58:06.116  INFO 5776 --- [main] .RequestMappingHandlerMapping : Mapped "{[/post],methods=[POST]}" onto public java.lang.String hello.App.post()
2016-03-11 13:58:06.468  INFO 5776 --- [main] .TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-03-11 13:58:06.473  INFO 5776 --- [main] hello.App : Started App in 4.736 seconds

關鍵節點解析

日誌片段含義
Refreshing AnnotationConfigEmbeddedWebApplicationContext 啟動 Spring 容器,掃描註解配置類
Overriding bean definition for bean 'beanNameViewResolver' 自動配置類間 Bean 覆蓋(ErrorMvc vs WebMvc),後載入者勝出
Tomcat initialized with port(s): 8080 內嵌 Tomcat 初始化,HTTP 端口 8080
Mapping servlet: 'dispatcherServlet' to [/] 核心調度 Servlet 映射根路徑,所有請求入口
Mapping filter: 'characterEncodingFilter' 等 自動註冊編碼、HiddenHttpMethod、RequestContext 等過濾器
Mapped "{[/test],methods=[GET]}" onto ...App.get() 控制器方法與路徑的精確映射關係
Started App in 4.736 seconds 應用啟動總耗時(JVM 啟動 5.798s)

最小化專案的擴展方向

  • 添加 spring-boot-starter-data-jpa + H2 → 秒級構建帶數據庫的應用
  • 引入 spring-boot-starter-actuator → 獲得健康檢查、指標監控端點
  • 配置 application.yml → 外部化配置管理
  • 打包為 Fat Jar → java -jar app.jar 生產部署

這個 30 行代碼的專案,完整展示了 Spring Boot「約定優於配置」的精髓:一個註解啟動自動配置,一個依賴引入全套 Web 棧,一個 main 方法即可運行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved