1. 程式人生 > >SpringBoot is What?

SpringBoot is What?

  SpringBoot is What?
  
  How use it ?
  
  Quick to use 
  
  SpringBoot is What?
  
  Spring的目標是致力於全方位簡化Java開發
  
  SpringBoot是簡化Java開發
  
  我們來探討一下一個標準的Spring程式我們需要該做什麼
  
  標準專案結構,以及必要的依賴
  
  web.xml檔案(或一個WebAPplicationInitializer實現)
  
  Spring的相關配置
  
  Controller控制器
  
  WEB應用伺服器(Tomcat)
  
  我們可以發現只有一個Controller是和我們的業務相關的,其他的都是Spring開發Web應用程式的通用模板,而SpringBoot就能讓你只寫控制器即可,剩下的全都交給SpringBoot即可,下面我們一起來看一下SpringBoot是如何簡化Spring開發的
  
  起步依賴 : 告訴SpringBoot需要什麼功能,它就能引入相關依賴
  
  自動配置 : 針對Spring常見功能自動提供相關配置
  
  命令列介面 : 編寫部分程式碼就可以執行程式
  
  Actuator : 能讓你深入到執行中的SpringBoot一探究竟
  
  How use it ?
  
  構建SpringBoot專案,有很多種方法,例如下面所示,你可以使用任何一種方法構建SpringBoot專案
  
  WEB介面(https://start.spring.io/)
  
  Spring Tool Suite
  
  IntelliJ IDEA
  
  SpringBoot CLI
  
  下面是使用web介面構建SpringBoot專案示例圖,另外幾種方式不再一一累述
  
  1
  
  Quick to use
  
  現在我們要花上三分鐘建立一個小的應用程式,是一個類似待辦事項的小應用,從這個應用程式中,我們就能感受到SpringBoot的起步依賴和自動配置的強大魅力 本章原始碼
  
  image
  
  建立一個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 www.mhylpt.com 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 www.yigouyule2.cn= RequestMethod.GET)
  
  public String readersBooks(Model model) {
  
  List<Book> readingList www.michenggw.com= readingListRepository.findByReader(reader);
  
  if (readingList != null) {
  
  model.addAttribute("books", readingList);
  
  }
  
  return "readingList";
  
  }
  
  @RequestMapping(method www.gcyl158.com = RequestMethod.POST)
  
  public String addToReadingList(Book book) {
  
  book.setReader(reader);
  
  readingListRepository.save(book);
  
  return "redirect:/readingList";
  
  }
  
  }
  
  前端html
  
  ......
  
  啟動SpringBoot專案,訪問 http://localhost:8080/readingList
  
  image
  
  剛才發生了什麼?我們不是要進行配置一些類的配置嗎?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的起步依賴和自動配置,我們幾乎不用做任何配置,但是在某些場景下自動配置可能並不如意,或者你需要另外一種配置,該怎麼辦?下一篇我們會一起來了解如何掌控SpringBoot的自動配置