1. 程式人生 > >SpringBoot使用(一)--- 構建簡單的應用

SpringBoot使用(一)--- 構建簡單的應用

Spring Boot提供了一種新的程式設計正規化,能在最小的阻力下開發Spring應用程式。有了它,
你可以更加敏捷地開發Spring應用程式,專注於應用程式的功能,不用在Spring的配置上多花功
夫,甚至完全不用配置。實際上, Spring Boot的一項重要工作就是讓Spring不再成為你成功路上
的絆腳石。

Spring Boot將很多魔法帶入了Spring應用程式的開發之中,其中最重要的是以下四個核心。

  • 自動配置:針對很多Spring應用程式常見的應用功能, Spring Boot能自動提供相關配置。
  • 起步依賴:告訴Spring Boot需要什麼功能,它就能引入需要的庫。
  • 命令列介面:這是Spring Boot的可選特性,藉此你只需寫程式碼就能完成完整的應用程式,
    無需傳統專案構建。
  • Actuator:讓你能夠深入執行中的Spring Boot應用程式,一探究竟。

使用Idea的spring 初始化器,勾選右邊的選項
在這裡插入圖片描述專案結構如下
在這裡插入圖片描述
啟動類:

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}

@SpringBootApplication開啟了Spring的元件掃描和Spring Boot的自動配置功能。實際上, @SpringBootApplication將三個有用的註解組合在了一起。

  • Spring的@Configuration:標明該類使用Spring基於Java的配置。
  • Spring的@ComponentScan:啟用元件掃描,這樣你寫的Web控制器類和其他元件才能被自動發現並註冊為Spring應用程式上下文裡的Bean。
  • Spring Boot 的 @EnableAutoConfiguration : 這 個 不 起 眼 的 小 注 解 也 可 以 稱 為@Abracadabra,就是這一行配置開啟了Spring Boot自動配置的魔力,讓你不用再寫成篇的配置了。

在這裡插入圖片描述

application.properties用於寫spring boot專案的配置。

server.port=8000   //tomcat的埠

dao
在這裡插入圖片描述繼承JpaRepository就可以,不需要自己實現實現類,jpa會幫助實現。

public interface ReadingListRepository extends JpaRepository<Book,Long> {

    List<Book> findByReader(String reader);
}

實體類

@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;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getReader() {
return reader;
}

public void setReader(String reader) {
this.reader = reader;
}

public String getIsbn() {
return isbn;
}

public void setIsbn(String isbn) {
this.isbn = isbn;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}
}


controller

@Controller
@RequestMapping("/read")
public class ReadingListController {

    private ReadingListRepository readingListRepository;
    @Autowired
    ReadingListController(ReadingListRepository readingListRepository){
        this.readingListRepository=readingListRepository;
    }
    @RequestMapping(value="/{reader}", method=RequestMethod.GET)
    public String readersBooks(
            @PathVariable("reader") String reader,
            Model model) {
        List<Book> readingList =
                readingListRepository.findByReader(reader);
        if (readingList != null) {
            model.addAttribute("books", readingList);
        }
        return "readingList";
    }
    @RequestMapping(value="/{reader}", method= RequestMethod.POST)
    public String addToReadingList(
            @PathVariable("reader") String reader, Book book) {
        book.setReader(reader);
        readingListRepository.save(book);
        return "redirect:/read/{reader}";
    }
}

啟動類

@SpringBootApplication(scanBasePackages = "com.example")
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

頁面:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" th:href="@{/style.css}"></link>
</head>
<body>
<h2>你的書籍列表</h2>
<div th:unless="${#lists.isEmpty(books)}">
    <dl th:each="book : ${books}">
        <dt class="bookHeadline">
            <span th:text="${book.title}">Title</span>
            <span th:text="${book.author}">Author</span>
            (ISBN: <span th:text="${book.isbn}">ISBN</span>)
        </dt>
        <dd class="bookDescription">
            <span th:if="${book.description}" th:text="${book.description}">Description</span>
            <span th:if="${book.description eq null}">No description available</span>
        </dd>
    </dl>
</div>
<div th:if="${#lists.isEmpty(books)}">
    <p>You have no books in your book list</p>
</div>

<h3>Add a book</h3>
<form method="POST">
    <label for="title">Title:</label>
    <input id="title" type="text" name="title" size="50"></input><br/>
    <label for="author">Author:</label>
    <input id="author" type="text" name="author" size="50"></input><br/>
    <label for="isbn">ISBN:</label>
    <input id="isbn" type="text" name="isbn" size="15"></input><br/>
    <label for="description">Description:</label><br/>
    <textarea id="description" name="description" cols="80" rows="5">
</textarea><br/>
    <input type="submit"></input>
</form>
</body>
</html>

效果:
在這裡插入圖片描述