外卖心得笔记 - - Day1

项目风格

  • 分模块开发
    在这里插入图片描述

  • 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文档的增强解决方案。

官网: https://swagger.io/

  1. 导入 knife4j 的maven坐标
<dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.2</version>
</dependency>

  1. 在配置类中加入 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;
    }
  1. 设置静态资源映射,否则接口文档页面无法访问
    /**
     * 设置静态资源映射
     * 重写父类方法
     * 如果没有当请求这个页面时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/");
    }

在这里插入图片描述

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值