项目风格
-
分模块开发
-
sky-common 子模块,存放公共类;例如:公共类,常量类,异常类
-
sky-pojo 子模块,存放实体类;
-
sky-server子模块放的是配置文件、配置类、拦截器、Controller、Service、Mapper、启动类等。
Nginx
切记Nginx路径不要有中文
Nginx 反向代理,将前端发送的动态请求由Nginx转发到后端服务器
nginx 反向代理的好处:
提高访问速度
进行负载均衡
保证后端服务安全
nginx 反向代理的配置方式:
server_name用于指定一个虚拟主机的域名或IP地址
http://localhost/api/employee/login
通过Nginx
http://localhost:8080/admin/employee/login
Pom.xml
-
每个maven工程都有对应的打包方式,默认为jar,web工程打包方式为war
父模块打包方式: pom
父项目的主要作用是管理子模块的版本和依赖关系,而不包含具体的实现代码。子模块为默认打包方式:jar包
-
聚合子模块,继承父模块
聚合 : 当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题
继承 : 继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
-
定义属性,引用属性
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!--Pom模型版本 以便Maven能够正确解析和处理POM文件-->
<modelVersion>4.0.0</modelVersion>
<!--
概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
作用:
简化配置
减少版本冲突
-->
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.7.3</version>
</parent>
<!-- 配置坐标-->
<groupId>com.sky</groupId>
<artifactId>sky-take-out</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 聚合工程的开发-->
<!-- 参与聚合的工程无法向上感知是否参与聚合,只能向下配置哪些模块参与本工程的聚合-->
<!-- 1. 创建Maven模块,设置打包类型为pom-->
<packaging>pom</packaging>
<!-- 2. 当前聚合工程所包含的子模块名称-->
<modules>
<module>sky-common</module>
<module>sky-pojo</module>
<module>sky-server</module>
</modules>
<properties>
<!-- 定义自定义属性 进行版本管理-->
<mybatis.spring>2.2.0</mybatis.spring>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring}</version>
</dependency>
</dependencyManagement>
</project>
上面是父工程pom文件中的一些自己遇到的没有理解很通透的信息,下面是
server项目pom文件中的一些当时不太通透的配置
<plugins>
<plugin>
<!--spring-boot-maven-plugin 插件配置: 这是 Spring Boot 应用程序的 Maven 插件,用于将应用程序打包成可执行的 JAR 文件。
通过这个插件,可以在 Maven 构建过程中启动 Spring Boot 应用程序。它通常用于生产环境中打包部署 Spring Boot 应用程序。-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->
<!-- 源代码使用的JDK版本 -->
<source>${maven.compiler.source}</source>
<!-- 需要生成的目标class文件的编译版本 -->
<target>${maven.compiler.target}</target>
<!-- 这个选项用来传递编译器自身不包含但是却支持的参数选项 -->
<!--compilerArguments 是 Maven 编译插件(maven-compiler-plugin)的一个配置选项,用于指定给编译器的额外参数。
在你提供的配置中,compilerArguments 配置了一个额外的参数 bootclasspath,指定了编译器的 bootclasspath 参数为 ${java.home}/lib/rt.jar。-->
<!--bootclasspath 参数用于指定编译器查找标准类库的位置,其中 ${java.home} 是一个 Maven 属性,表示 Java 安装目录的路径。
rt.jar 是 Java 运行时库的文件,包含了 Java 标准类库的实现。-->
<compilerArguments>
<bootclasspath>${java.home}/lib/rt.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
Redis
进入Redis安装目录下,运行redis-server.exe,加载redis.windows.conf配置
redis-server.exe redis.windows.conf
MD加密
修改数据库中明文密码,改为MD5加密后的密文
修改Java代码,前端提交的密码进行MD5加密后再跟数据库中密码比对
YApi接口
Swagger测试接口
使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,
以及在线接口调试页面。
Knife4j 是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
- 导入 knife4j 的maven坐标
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
- 在配置类中加入 knife4j 相关配置
/**
* 通过knife4j生成接口文档
* springboot启动时执行这个方法并且把这个对象创建出来
*
* @return
* @Api:用在类上,例如Controller,表示对类的说明
* @ApiModel:用在类上,例如entity、DTO、VO
* @ApiModelProperty:用在属性上,描述属性信息
* @ApiOperation:用在方法上,例如Controller的方法,说明方法的用途、作用
*/
@Bean
public Docket docket() {
log.info("准备生成接口文档....");
ApiInfo apiInfo = new ApiInfoBuilder()
.title("苍穹外卖项目接口文档")
.version("2.0")
.description("苍穹外卖项目接口文档")
.build();
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.groupName("管理端接口")
.apiInfo(apiInfo)
.select()
//制定生成接口需要扫描的包
.apis(RequestHandlerSelectors.basePackage("com.sky.controller.admin"))
.paths(PathSelectors.any())
.build();
// 解析反射生成接口文档
return docket;
}
- 设置静态资源映射,否则接口文档页面无法访问
/**
* 设置静态资源映射
* 重写父类方法
* 如果没有当请求这个页面时springMvc以为请求的是某个controller,并不认为是一个静态页面
* @param registry
*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("开始设置静态资源映射....");
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}