Spring Boot 从入门到实践系列教程(2)

Stella981
• 阅读 690

1.概述

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架.

使用spring boot有什么好处

其实就是简单、快速、方便!平时如果我们需要搭建一个spring web项目的时候需要怎么做呢?

1)配置web.xml,加载spring和spring mvc

2)配置数据库连接、配置spring事务

3)配置加载配置文件的读取,开启注解

4)配置日志文件

配置完成之后部署tomcat 调试

现在非常流行微服务,如果我这个项目仅仅只是需要发送一个邮件,如果我的项目仅仅是生产一个积分;我都需要这样折腾一遍!

但是如果使用spring boot呢?

很简单,我仅仅只需要非常少的几个配置就可以迅速方便的搭建起来一套web项目或者是构建一个微服务!

2.项目构建

pom.xml

<parent>

最初的依赖关系非常简单:

<dependency>

3.应用程序配置

@SpringBootApplication

注意我们如何使用_@SpringBootApplication_作为我们的主要应用程序配置类;

这相当于_@Configuration_,_@EnableAutoConfiguration_和_@ComponentScan_在一起。

最后,我们将定义一个简单的_application.properties_文件 - 现在只有一个属性:

server.port=8081

4.简单的MVC视图

现在让我们使用Thymeleaf添加一个简单的前端。

首先,我们需要将_spring-boot-starter-thymeleaf_依赖项添加到我们的_pom.xml中_:

<dependency> 

这样就可以默认启用Thymeleaf - 无需额外配置。

我们现在可以在_application.properties中_配置它:

spring.thymeleaf.cache=false

接下来,我们将定义一个简单的控制器和一个基本主页 - 带有欢迎消息:

@Controller

_home.html_:

<html>

注意我们如何使用我们在属性中定义的属性 - 然后注入它以便我们可以在主页上显示它。

5.安全

接下来,让我们为我们的应用程序添加安全性 - 首先包括安全启动器:

<dependency> 

到目前为止,您希望注意到一种模式 - 大多数Spring库都可以通过使用简单的Boot starters轻松导入到我们的项目中。

一旦_spring-boot-starter-security_依赖于应用程序的类路径 - 默认情况下所有端点都是安全的,使用基于Spring Security内容协商策略的_httpBasic_或_formLogin_。

这就是为什么,如果我们在类路径上有启动器,我们通常应该通过扩展_WebSecurityConfigurerAdapter_类来定义我们自己的自定义安全配置:

@Configuration

在我们的示例中,我们允许不受限制地访问所有端点。

6.持久化

让我们从定义我们的数据模型开始 - 一个简单的_Book_实体

@Entity

和它的存储库,在这里充分利用Spring Data:

public interface BookRepository extends CrudRepository<Book, Long> {

最后,我们当然需要配置新的持久层:

@EnableJpaRepositories("org.baeldung.persistence.repo") 
  • _@EnableJpaRepositories_扫描指定的包以获取存储库

  • _@EntityScan_可以获取我们的JPA实体

为了简单起见,我们在这里使用H2内存数据库 - 这样我们在运行项目时就没有任何外部依赖关系了。

一旦我们包含H2依赖关系,Spring Boot会自动检测它并设置我们的持久性,而不需要额外的配置,除了数据源属性:

spring.datasource.driver-class-name=org.h2.Driver

7.网络和控制器

接下来,让我们看一下Web层 - 我们将通过设置一个简单的控制器 - _BookController来_启动它。

我们将实现基本的CRUD操作,通过一些简单的验证来公开_Book_资源:

@RestController

鉴于应用程序的这一方面是一个API,我们在这里使用@ RestController_注释 - 相当于@Controller_和_@ResponseBody_ - 以便每个方法将返回的资源编组到HTTP响应中。

只有一个值得指出的注意事项 - 我们在这里公开我们的_Book_实体作为我们的外部资源。这对我们这里的简单应用程序来说很好,但在实际应用程序中,您可能希望将这两个概念分开。

8.错误处理

现在核心应用程序已准备就绪,让我们专注于使用_@ControllerAdvice_ 的简单集中式错误处理机制:

@ControllerAdvice

除了我们在这里处理的标准例外,我们还使用了一个自定义异常:

_BookNotFoundException_:

public class BookNotFoundException extends RuntimeException {

这应该让您了解这种全局异常处理机制的可能性。如果您希望看到完整的实现,请查看深入的教程。

请注意,默认情况下,Spring Boot还提供_/错误_映射。我们可以通过创建一个简单的_error.html_来自定义其视图:

<html lang="en">

与Boot中的大多数其他方面一样,我们可以使用简单的属性来控制它:

server.error.path=/error2

9.测试

@RunWith(SpringRunner.class)

10.结论

这是Spring Boot的快速而全面的介绍。

我们当然几乎没有触及表面 - 后续章节慢慢了解

往期精选

程序员必读的基本功图书,你读了几本?

转架构师你需要准备哪些面试题目

Java并发机制的底层实现原理 -  synchronized和volatile

史上最适合初学者入门的Java基础视频免费放送

Google面试官亲授Java面试视频


Spring Boot 从入门到实践系列教程(2)

转行程序员

给你第一手资讯和学习技巧,纯干货
更可随时答疑解惑。

点赞转发是我更新的最大动力

本文分享自微信公众号 - 转行程序员(be_coder)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Spring Boot(一):入门篇
一、什么是SpringBootSpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像Ma
Easter79 Easter79
3年前
SpringBoot简介
SpringBoot是由Pivotal团队提供的微服务整合框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapidapplicationdevelopment)成为领导者。简单来说Sp
Stella981 Stella981
3年前
Spring Boot系列(二) Spring Boot 构建框架
什么SpringBoot?SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是springboot其实不是什么新的框架,它默认配置了很多框架的使用方式。环境
Stella981 Stella981
3年前
SpringBoot简介
SpringBoot是由Pivotal团队提供的微服务整合框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapidapplicationdevelopment)成为领导者。简单来说Sp
Stella981 Stella981
3年前
Spring Boot 学习笔记一(Spring Boot 介绍)
一、SpringBoot介绍SpringBoot是由Pivotal团队提供的一种全新的微服务框架,其设计目的是用来简化Spring应用的初始化搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板话的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rap
Stella981 Stella981
3年前
Eclipse集成sts插件
一SpringBoot简介 SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapidapplicationdevelopme