<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 棧。
@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"; }
}
tomcat-embedded.jar → 自動裝配 TomcatEmbeddedServletContainerFactoryexclude / excludeName 排除特定自動配置類Spring MVC 提供,直接返回數據而非視圖名,構建 RESTful 服務首選。
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 方法即可運行。