图书管理系统框架设计
了解了图书管理系统需求之后,针对系统需求分析,我们需要对系统进行设计。具体的有数据库设计,指定在系统中使用的字段;接口设计,指定接口访问路径。
在本章节中,将会针对系统需求分析,进行系统设计,并搭建框架,为系统开发准备好环境。
数据库设计
同样的是,我们使用一个简化的数据表来介绍功能。首先,需要书籍ID、书籍的英文名称、书籍的中文名称、借阅书籍的数量、借阅的开始时间(这个用于借阅时间的延期)等字段。
表名:broowing 表信息。需要的字段、类型、字段长度如表17.1所示。

主键:uuid。SQL语句如下。
create table broowing(
uuid int(32) not null,
book_ename VARCHAR(32),
book_cname VARCHAR(32),
book_quantity VARCHAR(32),
start_time DATE,
end_time DATE,
primary key(uuid)
)engine=INNODB DEFAULT CHARSET=utf8;
接口设计
通过前面的需求分析,系统存在下面几个接口。
(1)查看借阅的图书接口
-
/book/queryAllBook。
-
/book/queryOne。
(2)借阅图书
在写接口时,需要存在两个接口做辅助,第一个接口可以查询到所有的图书,第二个接口可以根据条件查询特殊的图书。然后,对选择的图书进行借阅。
-
/broow/brrowBook。这里考虑后者,因此只用写最后一个接口。
(3)归还图书
-
/broow/returnBook。
(4)图书续借
-
/broow/renewBook。
环境搭建
在本案例中,只讲学生端的借阅。因此,我们只需要搭建两个模块即可,其一是注册中心,其二是借阅模块。
(1)模块说明
在本案例中,没有采用配置中心,在第 16 章中使用过,这里不再重复介绍;关于高可用,可以在配置的时候修改一下配置项,使得系统高可用;同时,关于路由或者负载均衡,可以选择性地添加组件。因此,模块部署如图17.1所示。

(2)注册中心的搭建
首先,我们新建一个名称为 libaray Center 的项目,如图17.2所示。

在 pom 文件中添加依赖,代码如下所示。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/><!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
配置文件的代码如下所示。
server.port=8764
eureka.client.service-url.defaultZone=http://localhost:8764/eureka/
eureka.client.register-with-eureka=false
eureka.server.enable-self-preservation=false
最后,启动应用,效果如图17.3所示。

(3)借阅模块的搭建
新建一个名称为 brrow 的项目,用于学生借阅图书的模块,如图17.4所示。

添加依赖,代码如下所示。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
然后,添加配置文件,代码如下所示。
server.port=8091
spring.application.name=brrowService
eureka.client.service-url.defaultZone=http://localhost:8764/eureka/
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3308/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=DatebookHikariCP
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jmx.enable=false