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>

效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ljz2016/article/details/84000831