在本教程中,我们将使用 H2 数据库创建一个简单的 Spring Boot RESTful 应用。
Spring 是用于创建企业应用的流行 Java 应用框架。 Spring Boot 是一种以最少的精力创建独立的,基于生产级别的基于 Spring 的应用的方法。
Apache Tomcat 是由 Apache 软件基金会(ASF)开发的开源 Java Servlet 容器。 Tomcat 实现了几种 Java EE 规范,包括 Java Servlet,JavaServer Pages(JSP),Java EL 和 WebSocket。 Tomcat 可以独立和嵌入式模式运行。
H2 是完全用 Java 创建的开源关系数据库管理系统。 它可以嵌入 Java 应用中或以客户端-服务器模式运行。 它易于部署和安装,占地面积小。
JdbcTemplate 是一个 Spring 库,可以帮助程序员创建与关系数据库和 JDBC 一起使用的应用。 它会处理许多繁琐且容易出错的底层细节,例如处理事务,清理资源以及正确处理异常。 JdbcTemplate 在 Spring 的spring-jdbc
模块中提供。
JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式。 人类可以轻松地进行读写,并通过机器解析并生成 JSON。 JSON 的官方 Internet 媒体类型为application/json
。 JSON 文件扩展名是.json
。
RESTFul 应用遵循 REST 体系结构样式,该样式用于设计网络应用。 RESTful 应用生成 HTTP 请求,这些请求对资源执行 CRUD(创建/读取/更新/删除)操作。
应用
我们的应用是一个运行在嵌入式 Tomcat 服务器上的 Spring Boot RESTful 应用。 它以 JSON 格式从 H2 数据库返回数据。 该应用使用 JdbcTemplate 简化 JDBC 编程。
这是项目结构。
pom.xml
这是 Maven 构建文件。 h2
依赖项是 H2 数据库的驱动程序。 spring-boot-devtools
启用热插拔,禁用模板缓存并启用实时重载。 spring-boot-starter-web
是使用 Spring MVC 构建 Web(包括 RESTful)应用的入门程序。 spring-boot-starter-jdbc
是在 Spring Boot 中使用 JDBC 的入门工具。
application.yml
application.yml
文件包含 Spring Boot 应用的各种配置设置。 我们具有服务器端口和上下文路径(应用名称)的映射。 使用banner-mode
属性,我们可以关闭 Spring 标语。 该平台值用在 SQL 初始化脚本中:schema-${platform}.sql
和data-${platform}.sql
。 我们将 H2 设置为使用 PostgreSQL 兼容模式。 H2 数据库在内存中运行。 另外,我们将 spring 框架的日志记录级别设置为 ERROR。 该文件位于src/main/resources
目录中。
City.java
这是City
bean。
schema-h2.sql
该 SQL 脚本创建CITIES
表。
data-h2.sql
该脚本用数据填充表。 这两个脚本都位于类路径的根目录中。
ICityService.java
ICityService
提供了获取所有城市并通过其 ID 从数据源获取城市的合同方法。
CityService.java
CityService
包含findAll()
和findById()
方法的实现。 我们使用 Spring 的 JdbcTemplate 来执行 SQL 代码。
注入JdbcTemplate
。
这是从CITIES
表中选择所有城市的 SQL。
BeanPropertyRowMapper
将一行转换为指定映射目标类的新实例。
这是用于从CITIES
表中选择由 ID 标识的特定城市的 SQL。
要从CITIES
表中获得一行,我们使用queryForObject()
方法。
MyController.java
这是 Spring Boot RESTful 应用的控制器类。 @RestController
注解创建一个 RESTful 控制器。 传统的 MVC 控制器使用ModelAndView
,而 RESTful 控制器仅返回对象,并且对象数据以 JSON 或 XML 格式直接写入 HTTP 响应。
我们在countryService
字段中插入ICityService
。
@RequestMapping
注解用于将 Web 请求映射到 Spring 控制器方法。 在这里,我们将具有/cities
路径的请求映射到控制器的findCities()
方法。 默认请求是 GET 请求。
我们不需要手动将City
域对象转换为 JSON。 因为 Jackson 2 在类路径中((通过spring-boot-starter-web
包含在内),所以 Spring 会自动选择MappingJackson2HttpMessageConverter
将City
实例转换为 JSON。
Application.java
Application
设置 Spring Boot 应用。 @SpringBootApplication
启用自动配置和组件扫描。
使用mvn spring-boot:run
命令,运行应用。 该应用部署在嵌入式 Tomcat 服务器上。
使用curl
命令,我们可以获得所有城市。
在这里,我们得到了一个由其 ID 标识的城市。
在本教程中,我们创建了一个 Spring Boot RESTful 应用,该应用以 JSON 格式从 H2 数据库返回数据。