本篇學習目標
- Spring Boot是什么?
- 構建Spring Boot應用程序
- 三分鍾開發SpringBoot應用程序 本章源碼下載
Spring Boot是什么?
spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。
- Spring的目標是致力於全方位簡化Java開發
- SpringBoot是簡化Spring開發
我們來探討一下一個標准的Spring程序我們需要該做什么?
- 標准項目結構,以及必要的依賴
- web.xml文件(或一個WebAPplicationInitializer實現)
- Spring的相關配置
- Controller控制器
- WEB應用服務器(Tomcat)
我們可以發現只有一個Controller是和我們的業務相關的,其他的都是Spring開發Web應用程序的通用模板,而SpringBoot就能讓你只寫控制器即可,剩下的全都交給SpringBoot即可,下面我們一起來看一下SpringBoot是如何簡化Spring開發的
SpringBoot如何簡化Spring開發的?
- 起步依賴 : 告訴SpringBoot需要什么功能,它就能引入相關依賴
- 自動配置 : 針對Spring常見功能自動提供相關配置
- 命令行界面 : 編寫部分代碼就可以運行程序
- Actuator : 能讓你深入到運行中的SpringBoot一探究竟
構建SpringBoot應用程序
構建SpringBoot項目,有很多種方法,例如下面所示,你可以使用任何一種方法構建SpringBoot項目
- WEB界面(https://start.spring.io/)
- Spring Tool Suite
- IntelliJ IDEA
- SpringBoot CLI
下面是使用web界面構建SpringBoot項目示例圖,另外幾種方式不再一一累述

三分鍾開發SpringBoot應用程序
現在我們要花上三分鍾創建一個小的應用程序,是一個類似待辦事項的小應用,從這個應用程序中,我們就能感受到SpringBoot的起步依賴和自動配置的強大魅力 本章源碼下載

- 創建一個BOOK(實體類)
- 創建一個Repository(倉庫接口)
- 創建一個Controller(控制器)
Book實體
@Entity
public class Book {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String reader;
private String isbn;
private String title;
private String author;
private String description;
getter and setter .....
}
倉庫接口
@Repository
public interface ReadingListRepository extends JpaRepository<Book, Long> {
List<Book> findByReader(String reader);
}
控制器
@Controller
@RequestMapping("/readingList")
public class ReadingListController {
private static final String reader = "jimisun";
@Autowired
private ReadingListRepository readingListRepository;
@RequestMapping(method = RequestMethod.GET)
public String readersBooks(Model model) {
List<Book> readingList = readingListRepository.findByReader(reader);
if (readingList != null) {
model.addAttribute("books", readingList);
}
return "readingList";
}
@RequestMapping(method = RequestMethod.POST)
public String addToReadingList(Book book) {
book.setReader(reader);
readingListRepository.save(book);
return "redirect:/readingList";
}
}
前端html
......
啟動SpringBoot項目,訪問 http://localhost:8080/readingList

剛才發生了什么?
我們不是要進行配置一些類的配置嗎?NO NO NO,使用SpringBoot讓配置成為了過去,SpringBoot的自動配置(利用Spring的條件化配置)擔任起了配置Spring的重任
- 因為ClassPath里有H2,所以會創建一個H2數據庫的Bean,JPA實現需要它訪問數據庫
- 因為ClassPath里有Hibernate(Spring Data JPA傳遞引入的)實體管理器,所以自動配置會配置與Hibernate有關的Bean
- 因為ClassPath里有Spring Data JPA,所以會根據倉庫的接口創建倉庫的實現
- 因為ClassPath里有Spring MVC(Web的起步依賴引入的),所以會配置Spring的DispatcherServlet並啟用Spring MVC
- 因為ClassPath里有Tomcat(Web起步依賴引入的),所以會啟動一個嵌入式的Tomcat容器,監聽8080端口
- ......
我們可以看到,得益於SpringBoot的起步依賴和自動配置,我們幾乎不用做任何配置,但是在某些場景下自動配置可能並不如意,或者你需要另外一種配置,該怎么辦? Java工程師之SpringBoot系列教程將為您詳細揭曉SpringBoot神秘面紗
該教程所屬Java工程師之SpringBoot系列教程,本系列相關博文目錄 Java工程師之SpringBoot系列教程前言&目錄
