Spring Boot的入门例子

发表时间:2018-02-23 10:23:29 浏览量( 24 ) 留言数( 0 )

学习目标:

1、了解Spring Boot

2、了解Spring Boot的搭建

3、搭建一个增删改查的例子


学习过程:

    这节课我们通过一个简单的示例,体会一下Spring Boot的优点

一、建立引导类

    虽然Spring Boot已经没有什么配置需要写的了。但是引导和简单的配置类还是需要的,但是已经是非常简单的了。要注意这个类最好放在所有类的基础包里面,SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描。这个类的位置很关键:如果Application类所在的包为:com.javadayup,则只会扫描com.javadayup包及其所有子包,所以com.javadayup.dao和com.javadayup.bus等都会扫描到。但是org.util这些就不会扫描到。但是你也可以通过Spring的@ComponentScan:启用组件扫描指定扫描的包路径。类如下:

@SpringBootApplication
public class SpringfirstApplication {

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

二、配置了application.properties

这里就只是配置一下端口和日志类

server.port=8090
server.session-timeout=1000000

logging.config=classpath:logback-spring.xml

三、修改pom.xml

我们先使用H2数据库,所以需要导入这个包,为了使用spring-boot:run这些命令引入了spring-boot的maven插件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>


	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.4.7.RELEASE</version>
	</parent>

	<groupId>com</groupId>
	<artifactId>springday12boot</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springday12boot</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>runtime</scope>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

我们并不需要做其他的配置,Spring-boot会帮助我们自动配置的

Spring Boot的自动配置要考虑的。

1、Spring的JdbcTemplate是不是在Classpath里?如果是,并且有DataSource的Bean,则自动配置一个JdbcTemplate的Bean。

2、Thymeleaf是不是在Classpath里?如果是,则配置Thymeleaf的模板解析器、视图解析器以及模板引擎。

四、编写业务

1、编写实体类

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

2、实体操作类

public interface ReadingListRepository extends JpaRepository<Book, Long> { 
	 List<Book> findByReader(String reader);
 }

3、controller类

@Controller
@RequestMapping("/")
public class ReadingListController {
	private ReadingListRepository readingListRepository;

	@Autowired
	public 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:/{reader}";
	}
}

3、接下来就在src/main/resources/templates里创建一个名为readingList.html的文件

<html>
<head>
<title>Reading List</title>
<link rel="stylesheet" th:href="@{/style.css}"></link>
</head>
<body>
	<h2>Your Reading List</h2>
	<div th:unless="${#lists.isEmpty(books)}">
		<dl th:each="book : ${books}">
			<dt class="bookHeadline">
				<span th:text="${book.title}">Title</span> by <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>
	<hr />
	<h3>Add a book</h3>
	<form method="POST">
		<label for="title">Title:</label> <input type="text" name="title"
			size="50"></input><br /> <label for="author">Author:</label> <input
			type="text" name="author" size="50"></input><br /> <label for="isbn">ISBN:</label>
		<input type="text" name="isbn" size="15"></input><br /> <label
			for="description">Description:</label><br />
		<textarea name="description" cols="80" rows="5">
        </textarea>
		<br /> <input type="submit"></input>
	</form>
</body>
</html>


五、启动并测试

使用spring-boot:run命令启动项目

再浏览器上面输入地址接口:

http://localhost:8090/index


以上配置项目关闭,数据则消失,添加以下配置到配置文件,可存入本地:

spring.jpa.show-sql = true   

spring.jpa.hibernate.ddl-auto = update  

spring.datasource.url = jdbc\:h2\:file\:D\:\\testdb  

#spring.datasource.url = jdbc:h2:file:~/.h2/testdb  

spring.datasource.username = sa  

spring.datasource.password = sa  

spring.datasource.driverClassName =org.h2.Driver  

  

spring.jpa.show-sql = true #显示sql语句  

spring.jpa.hibernate.ddl-auto = update #这个必须加,每次启动对应实体