搭建开发环境
上一节我们已经介绍了企业软件开发相关内容,并结合企业软件开发流程,从需求分析和系统设计两个阶段针对瑞吉点餐这个项目做了详细分析,下面我们即将进入编码实现阶段,不过在实际开始编码前,我们还要做一件事情,搭建我们个人的开发环境。
搭建开发环境我们分两步分讲解:
- 数据库环境,我们需要创建一个数据库,并将我们设计好的表结构导入到这个库中
- 项目工程环境,也就是创建我们的初始化瑞吉点餐的项目代码结构,集成技术选型章节确定使用的技术。
# 数据库环境
首先,咱们看下如何搭建数据库环境,之前JavaWeb阶段我们在自己电脑上安装了MySQL,在Linux课程当中我们也学习了如何在linux系统中安装MySQL,这两个MySQL环境大家都可以使用。MySQL环境已经有了,下面我们就用两个步骤来完成瑞吉点餐项目数据库环境的初始化:
- 创建数据库
- 导入瑞吉点餐数据库脚本
# 创建数据库
创建MySQL数据库有两种方式:通过图形化客户端工具;或者通过MySQL命令行客户端。这两种方式都提供给大家,大家根据自己的喜好任意选择一种即可:
- 图形化客户端工具
注意
本项目数据库的字符串,选择utf8mb4
- MySQL命令行客户端
# 导入瑞吉点餐数据库脚本
项目的数据库创建好之后,就可以将课程资料中的数据库脚本知道导入到数据库中了,导入数据库脚本和创建数据库一样,也有两种方式:通过图形化客户端工具或者MySQL命令行客户端。下面依次向大家演示两种数据库脚本的导入方式,同学们在练习时任意选择一种即可。
- 图形化客户端
- MySQL命令行客户端
注意
通过命令导入SQL脚本时,注意SQL文件不要放在中文目录中,否则会报错。
# 项目表介绍
数据库环境初始化完成后,接下来我们就结合原型来介绍一下项目中设计到的表:
序号 | 表名 | 说明 |
---|---|---|
1 | employee | 员工表 |
2 | category | 菜品和套餐分类表 |
3 | dish | 菜品表 |
4 | setmeal | 套餐表 |
5 | setmeal_dish | 套餐菜品关系表 |
6 | dish_flavor | 菜品口味关系表 |
7 | user | 用户表(C端) |
8 | address_book | 地址簿表 |
9 | shopping_cart | 购物车表 |
10 | orders | 订单表 |
11 | order_detail | 订单明细表 |
针对上述的表,当前我们先简单了解一下,知道项目中有哪些表,每张表中存储什么样的数据即可。至于具体的表结构,后面在做具体功能开发时我们再详细介绍。
# 工程环境
数据库环境搭建好了,接下来就到我们的项目工程环境了。初始化瑞吉点餐项目工程环境,我们将按照下面的步骤进行:
# 配置IDEA环境
- 创建空项目
- 检查项目编码
- 检查JDK版本
- 检查Maven配置
# 创建Maven项目
按照上述步骤操作后,删除无用的目录及文件,并修改application.properties文件为application.yml文件, 最终项目目录结构如下:
# 引入依赖坐标
在pom.xml文件的<dependencies></dependencies>
标签内添加如下内容:
<!-- spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBaits-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!-- MyBatis-Plus代码生成器模板引擎 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<!-- fastjson JavaBean与JSON转化 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.76</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.15</version>
</dependency>
<!-- hutool Java工具类库 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.11</version>
</dependency>
<!-- mysql 驱动 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<!-- spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# 初始化项目配置
初始化包,创建Maven项目时默认已初始化完成
初始化配置,在application.yml配置文件中添加如下内容:
server:
port: 9090
spring:
application:
name: reggie
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.182.127:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: root
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
global-config:
db-config:
id-type: auto
logging:
config: classpath:logback.xml
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- 在resources目录下创建logback.xml日志输出配置文件,并添加如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--
CONSOLE :表示当前的日志信息是可以输出到控制台的。
-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--输出流对象 默认 System.out 改为 System.err-->
<target>System.out</target>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度
%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %cyan([%thread]) %boldGreen(%logger{15}) : %msg%n</pattern>
</encoder>
</appender>
<!-- File是输出的方向通向文件的 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!--日志输出路径-->
<file>D:/itcast/Temp/LogFile/reggie/reggie.log</file>
<!--指定日志文件拆分和压缩规则-->
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--通过指定压缩文件名称,来确定分割文件方式-->
<fileNamePattern>D:/itcast/Temp/LogFile/reggie/reggie-%d{yyyy-MMdd}.log%i.gz</fileNamePattern>
<!--文件拆分大小-->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
</appender>
<!--
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默认debug
<root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
-->
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE" />
</root>
</configuration>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
- 修改启动类
ReggieApplication
package com.itheima.reggie;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@Slf4j
@SpringBootApplication
public class ReggieApplication {
public static void main(String[] args) {
SpringApplication.run(ReggieApplication.class, args);
log.info("项目启动成功......");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Slf4j
@Slf4j
是lombok中提供的注解,用来通过slf4j记录日志。
当上面的内容都配置完成后,就可以通过引导类,启动我们的项目了。
- 导入前端静态资源
考虑到小王在学校里面掌握的主要是后端技术,因此前端页面开发还需要协调他的师兄小李帮忙。小李在了解完项目的具体需求后就开发出了一版前端页面,包括后台管理端和用户端的页面:
- 导入静态资源
将上图中backend和front两个目录中的静态资源文件,拷贝到项目的resources目录下:
拷贝完成后,我们重启服务,访问http://localhost:9090/backend/index.html
404 错误原因
原因在于在SpringBoot项目中,默认静态资源的存放目录为classpath:/resources/,classpath:/static/,classpath:/public/,而在项目中静态资源是放在backend和front目录下的,因此访问时就无法正常找到静态资源。解决办法是:设置静态资源映射。
- 创建
WebMvcConfig
配置类,设置静态资源映射
package com.itheima.reggie.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
/**
* WebMvcConfig配置类
* @author sunyy
* @version 0.0.1
* @since 2023.2.7
*/
@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("配置静态资源映射......");
registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
log.info("设置/backend/**访问路径的静态资源......");
registry.addResourceHandler("/front/**").addResourceLocations("/classpath:/front/");
log.info("设置/front/**访问路径的静态资源......");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- 添加版本控制
6.1 创建远程仓库 6.2 初始化本地仓库 6.3 提交本地代码
- 创建远程仓库
- 初始化本地仓库
- 提交本地代码
# 启动服务,访问验证
在搭建、并配置上述的基础环境之后,我们再来通过引导类,启动项目,访问http://localhost:9090/backend/index.html