1.创建csmall项目

我们要搭建一个项目,用于学习各种微服务知识

搭建的过程有很多新的标准,需要我们掌握和学习

发给大家的3个csmall的项目

csmall-finish.zip:这个项目是当前学习过程中需要使用的项目,有些配置和固定的代码,可以从中复制

csmall-mobile-repo.zip:酷鲨商城前台前端项目

csmall-jsd2203.zip:酷鲨商城前台后端项目模板

1.1业务概述

我们通过学习电商网站添加订单的业务来学习需要使用到的微服务组件

我们模拟用户选中了购物车中的商品后,点击"确认订单"按钮后的业务操作

1.减少用户选中商品的库存数量(sku)

2.删除用户购物车中勾选的商品

3.生成订单,将订单信息保存到数据库

我们将上面3个操作设计为3个模块完成

  • 库存模块:减少库存
  • 购物车模块:删除购物车信息
  • 订单模块:新增订单

除此之外,我们还要创建一个项目对新增订单的业务进行触发操作

  • 触发模块:business

1.2创建csmall父项目

创建项目名称csmall

我们微服务开发过程中,一般都会使用一个Idea中包含多个项目的形式

这个形式就是先创建一个"父项目",再在这个父项目中创建多个子项目的操作

我们首先创建一个项目:csmall

注意细节的修改

首先,将当前csmall项目修剪为父项目的格式

  • 删除csmall项目的src文件夹,因为父项目不写代码
  • 修改pom文件

最终csmall的pom文件如下

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.tedu</groupId><artifactId>csmall</artifactId><version>0.0.1-SNAPSHOT</version><name>csmall</name><description>Demo project for Spring Boot</description><!--   当前项目会以一个pom文件的形式被子项目继承   --><packaging>pom</packaging>
</project>

csmall-jsd2204: 学习微服务项目的简单示例

1.3创建子项目

创建csmall-stock项目

我们每次创建一个子项目之后

都要进行"父子相认"

在父项目的pom文件中,编写子项目的存在

<!--  表示当前项目是一个父项目,以pom文件的形式,供子项目继承  -->
<packaging>pom</packaging>
<!--  当前父项目包含的所有模块,module就是模块的意思  -->
<modules><module>csmall-stock</module>
</modules>

还需要在子项目的pom文件中对父项目进行继承操作

父项目的第11行到第13行

复制到子项目的第6行到第8行

子项目pom文件修改后

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>cn.tedu</groupId><artifactId>csmall</artifactId><version>0.0.1-SNAPSHOT</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.tedu</groupId><artifactId>csmall-stock</artifactId><version>0.0.1-SNAPSHOT</version><name>csmall-stock</name><description>Demo project for Spring Boot</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies>
</project>

父子相认完成

这样当前子项目就可以读取父项目中的pom文件信息了

删除stock模块src\test文件夹

1.4父项目管理依赖版本

在我们现在使用maven添加依赖的认知中

有些依赖时必须添加版本号才能执行

有些依赖则不必添加版本号

原因是我们继承的SpringBoot(2.5.9)父项目中,定义了一些常用依赖的版本号

如果我们自己编写的父项目想定义我们项目中需要的依赖版本号的话,也是可以实现的

这样做可以统一所有子项目的版本,在更新版本时,只需要修改父项目中定义的版本号即可

父项目的pom文件添加如下内容

<!--  定义父项目需要的版本号参数   -->
<properties><mybatis.version>2.2.2</mybatis.version>
</properties>
<!--   dependencyManagement不是添加依赖,而是确定子项目使用依赖时的版本,也称锁版本  -->
<dependencyManagement><dependencies><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency></dependencies>
</dependencyManagement>

子项目中如果需要mybatis的依赖只需要添加如下内容即可,无需再指定版本号

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>

上面的操作也称之为"锁版本"

前端Vant项目git地址

vant2204: 学习简单Vant的示例,了解Vant一般功能

包含今天笔记的csmall项目

csmall-jsd2204: 学习微服务项目的简单示例

1.5加载正式项目pom文件

因为我们学习微服务的过程中需要很多微服务相关的依赖

这些依赖都需要在父项目中进行版本的管理的

所以我们直接使用分享给大家的完整版项目的父项目pom文件即可

父项目完整最终pom文件如下

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.9</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.tedu</groupId><artifactId>csmall</artifactId><version>0.0.1-SNAPSHOT</version><name>csmall</name><description>Demo project for Spring Boot</description><!--  表示当前项目是一个父项目,以pom文件的形式,供子项目继承  --><packaging>pom</packaging><!--  当前父项目包含的所有模块,module就是模块的意思  --><modules><module>csmall-stock</module></modules><properties><java.version>1.8</java.version><spring-cloud.version>2020.0.3</spring-cloud.version><spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version><spring-boot.version>2.5.4</spring-boot.version><spring-boot-configuration-processor.version>2.3.0.RELEASE</spring-boot-configuration-processor.version><spring-security-jwt.version>1.0.10.RELEASE</spring-security-jwt.version><mybatis-spring-boot.version>2.2.0</mybatis-spring-boot.version><mybaits-plus.version>3.4.1</mybaits-plus.version><pagehelper-spring-boot.version>1.4.0</pagehelper-spring-boot.version><mysql.version>8.0.26</mysql.version><lombok.version>1.18.20</lombok.version><knife4j-spring-boot.version>2.0.9</knife4j-spring-boot.version><spring-rabbit-test.version>2.3.10</spring-rabbit-test.version><spring-security-test.version>5.5.2</spring-security-test.version><fastjson.version>1.2.45</fastjson.version><druid.version>1.1.20</druid.version><jjwt.version>0.9.0</jjwt.version><seata-server.version>1.4.2</seata-server.version></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><!-- 依赖管理 --><dependencyManagement><dependencies><!--seata-all--><dependency><groupId>io.seata</groupId><artifactId>seata-all</artifactId><version>${seata-server.version}</version></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!-- MySQL --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><scope>runtime</scope></dependency><!-- Alibaba Druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><!-- MyBatis Spring Boot:数据访问层MyBatis编程 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis-spring-boot.version}</version></dependency><!-- MyBatis Plus Spring Boot:MyBatis增强 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybaits-plus.version}</version></dependency><!-- MyBatis Plus Generator:代码生成器 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>${mybaits-plus.version}</version></dependency><!-- PageHelper Spring Boot:MyBatis分页 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pagehelper-spring-boot.version}</version></dependency><!-- Spring Boot:基础框架 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot Web:WEB应用 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot Freemarker:MyBaits Plus Generator的辅助项 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot Validation:验证请求参数 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot Security:认证授权 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot Oauth2:认证授权 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot配置处理器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${spring-boot-configuration-processor.version}</version></dependency><!-- Spring Security JWT --><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-jwt</artifactId><version>${spring-security-jwt.version}</version></dependency><!-- Knife4j Spring Boot:在线API --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>${knife4j-spring-boot.version}</version></dependency><!-- Spring Boot Data Redis:缓存 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot Data MongoDB:缓存 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot Data Elasticsearch:文档搜索 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot AMQP:消息队列 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Boot Actuator:健康监测 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId><version>${spring-boot.version}</version></dependency><!-- Spring Cloud家族 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud Alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- Alibaba FastJson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!-- JJWT --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- Spring Boot Test:测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>${spring-boot.version}</version><scope>test</scope></dependency><!-- Spring Rabbit Test:消息队列测试 --><dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit-test</artifactId><version>${spring-rabbit-test.version}</version><scope>test</scope></dependency><!-- Spring Security Test:Security测试 --><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-test</artifactId><version>${spring-security-test.version}</version><scope>test</scope></dependency><!--seata整合springboot--><dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>${seata-server.version}</version></dependency></dependencies></dependencyManagement>
</project>

1.6创建通用模块(项目)commons

1.6.1创建项目

在实际开发中

经常有一个类需要在多个微服务项目中使用的情况

为了减少代码的冗余

我们在父项目中创建一个子项目commons专门保存编写这样的类

然后哪个微服务需要使用,就添加对commons的依赖即可

我们先来创建csmall-commons这个项目

父子相认

<module>csmall-commons</module>

子项目pom文件最终如下

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>cn.tedu</groupId><artifactId>csmall</artifactId><version>0.0.1-SNAPSHOT</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.tedu</groupId><artifactId>csmall-commons</artifactId><version>0.0.1-SNAPSHOT</version><name>csmall-commons</name><description>Demo project for Spring Boot</description><dependencies><!--在线api文档--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId></dependency><!-- Spring Boot Web:WEB应用 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></exclusion><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-json</artifactId></exclusion><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency></dependencies></project>

当前模块只是编写通用类和代码

实际上不需要运行

所以删除运行相关的文件

删除test测试文件夹

删除resources文件夹

删除SpringBoot启动类

1.6.2创建实体类

带大家编写一个我们需要的实体类

创建cn.tedu.csmall.commons.pojo.cart.dto

包中创建CartAddDTO,代码如下

DTO:前端收集到数据发送给后端的实体

VO:后端从数据库查询出来要发送给前端的实体

@Data
// 定义knife4j在线文档解释文本的注解
@ApiModel("新增购物车商品信息的DTO")
public class CartAddDTO implements Serializable {@ApiModelProperty(value = "商品编号", name="commodityCode",example = "PC100")private String commodityCode;   // 商品编号@ApiModelProperty(value = "商品单价", name="price",example = "136")private Integer price;          // 商品单价@ApiModelProperty(value = "商品数量", name="count",example = "3")private Integer count;          // 商品数量@ApiModelProperty(value = "用户ID", name="userId",example = "UU100")private String userId;          // 用户ID
}

创建包

pojo.cart.model

包中创建类Cart

@Data
public class Cart implements Serializable {private Integer id;// 商品编号private String commodityCode;// 价格private Integer price;// 数量private Integer count;// 用户idprivate Integer userId;}

下面创建订单模块需要的类

pojo.order.dto.OrderAddDTO

@ApiModel("新增订单的DTO")
@Data
public class OrderAddDTO implements Serializable {@ApiModelProperty(value = "用户id",name="userId",example = "UU100")private String userId;@ApiModelProperty(value = "商品编号",name="commodityCode",example = "PC100")private String commodityCode;@ApiModelProperty(value = "商品数量",name="count",example = "5")private Integer count;@ApiModelProperty(value = "总金额",name="money",example = "50")private Integer money;
}

pojo.order.model.Order

@Data
public class Order implements Serializable {private Integer id;private String userId;private String commodityCode;private Integer count;private Integer money;
}

最后是库存相关的类

pojo.stock.dto.StockReduceCountDTO

@ApiModel("商品减少库存DTO")
@Data
public class StockReduceCountDTO implements Serializable {@ApiModelProperty(value = "商品编号",name="commodityCode",example = "PC100")private String commodityCode;@ApiModelProperty(value = "减库存数",name="reduceCount",example = "5")private Integer reduceCount;
}

pojo.stock.model.Stock

@Data
public class Stock implements Serializable {private Integer id;private String commodityCode;private Integer reduceCount;
}

1.6.3创建异常相关类

除了实体类多个模块需要使用之外

像异常类和控制器返回的JsonResult类也是多个模块需要使用的类型

它们也要编写在commons中

创建cn.tedu.csmall.commons.restful包

在这个包中先创建异常响应码枚举

/*** 错误代码枚举类型*/
public enum ResponseCode {OK(200),BAD_REQUEST(400),UNAUTHORIZED(401),FORBIDDEN(403),NOT_FOUND(404),NOT_ACCEPTABLE(406),CONFLICT(409),INTERNAL_SERVER_ERROR(500);private Integer value;ResponseCode(Integer value) {this.value = value;}public Integer getValue() {return value;}}

下面创建自定义异常类

创建包cn.tedu.csmall.commons.exception

包中创建类CoolSharkServiceException

/*** 业务异常*/
@Data
@EqualsAndHashCode(callSuper = false)
public class CoolSharkServiceException extends RuntimeException {private ResponseCode responseCode;public CoolSharkServiceException(ResponseCode responseCode, String message) {super(message);setResponseCode(responseCode);}}

将restful包中用于控制器返回的JsonResult类复制

/*** 通用响应对象*/
@Data
public class JsonResult<T> implements Serializable {/*** 状态码*/@ApiModelProperty(value = "业务状态码", position = 1, example = "200, 400, 401, 403, 404, 409, 500")private Integer state;/*** 消息*/@ApiModelProperty(value = "业务消息", position = 2, example = "登录失败!密码错误!")private String message;/*** 数据*/@ApiModelProperty(value = "业务数据", position = 3)private T data;/*** 创建响应结果对象,表示"成功",不封装其它任何数据* @return 响应结果对象*/public static JsonResult<Void> ok() {return ok("OK");}public static JsonResult ok(String message){JsonResult jsonResult=new JsonResult();jsonResult.setState(ResponseCode.OK.getValue());jsonResult.setMessage(message);jsonResult.setData(null);return jsonResult;}/*** 创建响应结果对象,表示"成功",且封装客户端期望响应的数据* @param data 客户端期望响应的数据* @return 响应结果对象*/public static <T> JsonResult<T> ok(String message,T data) {JsonResult<T> jsonResult = new JsonResult<>();jsonResult.setState(ResponseCode.OK.getValue());jsonResult.setData(data);return jsonResult;}/*** 创建响应结果对象,表示"失败",且封装"失败"的描述** @param e CoolSharkServiceException异常对象* @return 响应结果对象*/public static JsonResult<Void> failed(CoolSharkServiceException e) {return failed(e.getResponseCode(), e);}/*** 创建响应结果对象,表示"失败",且封装"失败"的描述** @param responseCode "失败"的状态码* @param e            "失败"时抛出的异常对象* @return 响应结果对象*/public static JsonResult<Void> failed(ResponseCode responseCode, Throwable e) {return failed(responseCode, e.getMessage());}/*** 创建响应结果对象,表示"失败",且封装"失败"的描述** @param responseCode "失败"的状态码* @param message      "失败"的描述文本* @return 响应结果对象*/public static JsonResult<Void> failed(ResponseCode responseCode, String message) {JsonResult<Void> jsonResult = new JsonResult<>();jsonResult.setState(responseCode.getValue());jsonResult.setMessage(message);return jsonResult;}}

我们编写的所有模块控制层发送异常时,也都由SpringMvc的统一异常处理类来处理

所以commons模块编写统一异常处理类也是常规操作

/*** 全局异常处理器*/
@RestControllerAdvice
@Slf4j
public class GlobalControllerExceptionHandler {/*** 处理业务异常*/@ExceptionHandler({CoolSharkServiceException.class})public JsonResult<Void> handleCoolSharkServiceException(CoolSharkServiceException e) {log.debug("出现业务异常,业务错误码={},描述文本={}", e.getResponseCode().getValue(), e.getMessage());e.printStackTrace();JsonResult<Void> result = JsonResult.failed(e);log.debug("即将返回:{}", result);return result;}/*** 处理绑定异常(通过Validation框架验证请求参数时的异常)*/@ExceptionHandler(BindException.class)public JsonResult<Void> handleBindException(BindException e) {log.debug("验证请求数据时出现异常:{}", e.getClass().getName());e.printStackTrace();String message = e.getBindingResult().getFieldError().getDefaultMessage();JsonResult<Void> result = JsonResult.failed(ResponseCode.BAD_REQUEST, message);log.debug("即将返回:{}", result);return result;}/*** 处理系统(其它)异常*/@ExceptionHandler({Throwable.class})public JsonResult<Void> handleSystemError(Throwable e) {log.debug("出现系统异常,异常类型={},描述文本={}", e.getClass().getName(), e.getMessage());e.printStackTrace();JsonResult<Void> result = JsonResult.failed(ResponseCode.INTERNAL_SERVER_ERROR, e);log.debug("即将返回:{}", result);return result;}
}

commons模块内容编写暂时告一段落

1.7创建business模块

business:商业\生意\业务的意思

这个模块创建出来是为了触发订单业务的

1.7.1创建项目

创建子项目csmall-business

父子相认

子项目pom文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>cn.tedu</groupId><artifactId>csmall</artifactId><version>0.0.1-SNAPSHOT</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.tedu</groupId><artifactId>csmall-business</artifactId><version>0.0.1-SNAPSHOT</version><name>csmall-business</name><description>Demo project for Spring Boot</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId></dependency><dependency><groupId>cn.tedu</groupId><artifactId>csmall-commons</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></project>

删除测试的test文件夹

1.8配置文件properties和yml

在今后企业中实际开发情况下,程序员更多愿意使用yml文件

原因是yml文件配置信息更加简洁

properties文件配置数据源

spring.datasource.url=jdbc:mysql://localhost:3306/csmall_db?useSSL=false&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root

yml文件配置数据源

spring:datasource:url: jdbc:mysql://localhost:3306/csmall_db?useSSL=false&useUnicode=true&characterEncoding=utf-8username: rootpassword: root

下面我们就使用yml文件配置business模块

创建application.yml文件,删除application.properties文件

yml文件内容如下

server:port: 20000
#公共配置
mybatis:configuration:cache-enabled: false   # 不启用mybatis缓存map-underscore-to-camel-case: true # 映射支持驼峰命名法log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 将运行的sql输出到控制台
knife4j:# 开启增强配置enable: true# 生产环境屏蔽,开启将禁止访问在线API文档production: false# Basic认证功能,即是否需要通过用户名、密码验证后才可以访问在线API文档basic:# 是否开启Basic认证enable: false# 用户名,如果开启Basic认证却未配置用户名与密码,默认是:admin/123321username: root# 密码password: root
spring:profiles:active: dev

我们在配置末尾看到了

spring:profiles:active: dev

上面的配置含义是让SpringBoot读取额外配置文件

我们参数值编写的是dev,那么springBoot会读取application-dev.yml

dev是可以随意修改的名字,没有任何固定要求

随笔

工作中可能遇到的含义类似的包名

controller/servlet:控制层

service/biz:业务层

mapper/dao/repository:持久层

entity/model/domain/bean/pojo:实体类包

map-underscore-to-camel-case: true # 映射支持驼峰命名法

user_id 自动映射java对应类中的userId属性

JSD-2204-创建csmall项目-Day02相关推荐

  1. JSD-2204-使用Idea启动Nacos-创建csmall项目-Dubbo-Day03

    1.使用Idea启动Nacos 之前我们启动Nacos都是使用dos命令行 启动过程比较复杂,命令比较长 Idea实际上支持我们更加方便的启动Nacos 步骤1: 步骤2: 步骤3: 配置成功之后 N ...

  2. Eclipse+Maven创建web项目

    有时候我们想用eclipse+maven创建web项目,怎么操作呢,下面我来给大家来分享一下方法 所需工具 已经安装了maven插件的elipse 步骤 1.打开eclipse,右键new--othe ...

  3. Java开发环境的搭建以及使用eclipse从头一步步创建java项目

    原文:出自本人的Linux博客http://blog.csdn.net/unix21/article/details/18813173 一.Java 开发环境的搭建 这里主要说windows环境下怎么 ...

  4. 使用SVN+Axure RP 8.0创建团队项目

    一.使用到的工具: VisualSVN Server --SVN服务器:https://www.visualsvn.com/server/ Axure RP 8.0  :http://www.down ...

  5. 使用idea创建springboot项目并打成war包发布到weblogic上...

    部署tomcat也是类似的,但是需要注意项目配置的路径,或者直接将项目放到webapp的ROOT目录下. 使用工具:intelliJ IDEA2016.3, jdk1.8 ,weblogic12 一 ...

  6. 介绍一个懒人创建springmvc项目的方法(二)

    PS: 我是一个懒人,我懒得搭建项目连pom都不想去找,连web.xml都不想配置.所以就会想着找一些简便的办法,来适应我这种懒人. ---------------------------- 本人介绍 ...

  7. 创建Django项目和模型(创建工程、子应用、设置pycharm环境、使用Django进行数据库开发的步骤)

    1.创建Django项目 文档:Writing your first Django app, part 1 | Django documentation | Django 步骤 创建Django项目 ...

  8. Eclipse 创建 Java 项目概述

    Eclipse 是一个开放源代码的.基于 Java 的可扩展开发平台.Eclipse 是 Java 的集成开发环境(IDE),当然 Eclipse 也可以作为其他开发语言的集成开发环境,如C,C++, ...

  9. 创建maven项目但是总是报错

    在创建maven项目的时候总是报错,也不知道为什么,是不是我本地的maven版本是太低了,还是其他的什么原因,那么我还是重新下载一个maven吧,怎么下载: 我们可以从这个地址去下载: http:// ...

最新文章

  1. CKEditor的安装与基本使用(JSP)
  2. U-Boot启动过程完全分析
  3. 自定义ImageLinkButton美化提交按钮
  4. Python selenium 文件自动下载 (自动下载器)
  5. 云计算IaaS核心技术全景指南
  6. 后台coder的神器!Bootstrap Layoutit
  7. POJ 3764 Trie + 贪心
  8. 七月的尾巴,我不是狮子座
  9. 网络维护汇总经典问题集
  10. Android中通用配器的使用
  11. Navicat导入excel表格(xlsx)报错解决
  12. ROS:bag数据包内容提取——雷达点云数据和imu数据
  13. I/O函数 writel __raw_writel mb()/rmb()/wmb()
  14. WinForm中绘制网格线,Load和Piant事件区别
  15. 讲讲一条MySQL更新语句是怎么执行的?
  16. matlab 路由表,闭关修炼之zigbee路由
  17. JAVA架构师面试分享—链家网
  18. 读者写者问题浅析(代码实现)
  19. 极域电子教室2014最新版
  20. pem格式证书编码 x509_x509证书设置编码格式

热门文章

  1. 可视化创建企业管理app
  2. PostgreSQL 源码解读(216)- 实现简单的扩展函数
  3. 云会议是什么?如何提升云会议的协同能力?
  4. 抓包工具charles实践分享
  5. “0基础考生考前三小时突破《申论》80分气哭学霸”——公文题(公文基础理论+方案类+总结类)
  6. 大疆 IC设计校招笔试题目
  7. 【转】Hibernate中session的clear(),flush(),evict()方法详解
  8. qcqa是什么职位_qc经理是什么职位
  9. 计算机应用基础2011,2011统计师计算机应用基础:计算机概述
  10. 论“蹭热点”,我只服“杜蕾斯”,盘点“杜蕾斯官方”曾蹭过的十大热点!