记录谷粒学院的一些问题--------------chapter1

1.yml配置文件的问题
yml的书写要求
application.yml 注意事项
在application.yml 文件书写注意:
  1. 不同“等级” 用冒号隔开
  2. 次等级的前面是空格,不能使用制表符(tab)
  3. 冒号之后如果有值,那么冒号和值之间至少有一个空格,不能紧贴着
最简单验证的方法就是:百度查询相应框架的yml写法

server:
  port: 8001
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:com/lys/service/*/mapper/*.xml
  global-config:
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0

yml代码书写不规范的时候就会出现以下情况
在这里插入图片描述
当yml配置文件书写规范后提示信息就消失了
在这里插入图片描述

2.解决完yml配置问文件后又出现了以下问题
在这里插入图片描述
发现我的依赖性不太满意,于是追根溯源开始翻查我的注解问题有没有写好,@Service,@Mapper,或者@MapperScan是否有用扫描Mapper中的类。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现依赖性是没有问题的,最终发现问出现在了一个@SpringbootApplication注解上面,如图所示

在这里插入图片描述
我加了@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}),
该注解的作用是,排除自动注入数据源的配置(取消数据库配置),一般使用在客户端(消费者)服务中
也就是说我的配置文件不起作用,相当于我前面解决好问题以后,又挖了一个坑给自己。(蜜汁骚操作
我查看了@SpringbootApplication注解的内容其中有一个@EnableAutoconfiguration
在这里插入图片描述
他实现的关键在于引入了AutoConfigurationImportSelector,其核心逻辑selectImports方法,逻辑大致如下:
从配置文件META-INF/spring.factories加载所有可能用到的自动配置类;
去重,并将excludeexcludeName属性携带的类排除;
过滤,将满足条件(@Conditional)的自动配置类返回;

3.返回的JSON格式时间出现问题
在这里插入图片描述
在yml中加入时间格式,并且当前时区在东八区所以GMT+8

spring:
	  jackson:
    	date-format: yyyy-MM-dd HH:mm:ss
    	time-zone: GMT+8

在这里插入图片描述

4.在写讲师接口的删除讲师时用浏览器无法进行删除
在这里插入图片描述
这是因为浏览器只有get提交,对于put和post和delete提交都不能进行测试。可以使用postman进行测试,
但由于这个项目使用B2C模式,有一个后台管理模块和一个前台界面(客户端使用),并且前后端分离开发模式中,api文档是最好的沟通方式。
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。(可以在线生成一个API文档)
为了后台管理模块更好的使用,所以可以整合Swagger来进行接口的测试。

5.整合Swagger框架的过程中遇到的问题

创建一个common模块,整合Swagger框架,为了所有框架都能使用。
① 不同模块下的代码引用,需要在pom文件中加入相关的依赖
在这里插入图片描述
引入依赖以后因为Springboot扫描配置类只会在启动类所在的包及其子包下带有@Component注解所带的类所以如果要加载Swagger的配置类还得在启动类上加上@ComponentScan扫描包下的所有类
在这里插入图片描述
6.统一Json数据格式
Json是由对象和数组构成,因为项目一般都是多个人一起完成的,所以要统一一个返回的Json格式。

//自己定义了一个Json格式
{
 "success": 布尔, //响应是否成功
 "code": 数字, //响应码
 "message": 字符串, //返回消息
 "data": HashMap //返回数据,放在键值对中
}

其中对Json的格式构造器进行私有化,防止外界使用调用Json的构造器,体现了面向对象的封装性,其中这并不是单例设计模式,虽然满足了构造器私有化,但单例设计模式还要求对该类实例化对象要求其类型为private static 这样才能满足单例的需求,如下代码。

 private R(){}//防止外界调用R的构造方法,只能使用R中的方法来得到R对象

    public static R ok(){
        R r = new R();
        r.setSuccess(true);
        r.setCode(ResultCode.SUCCESS.getCode());
        r.setMessage("成功");
        return r;
    }

其中代码为了满足链式编程例如R.ok().data;在各个方法的返回值都是return this。这样就能满足每次返回的对象就是调用这个方法的对象。(简单来说谁调用这个方法this就是谁

 public static R ok(){
        R r = new R();
        r.setSuccess(true);
        r.setCode(ResultCode.SUCCESS.getCode());
        r.setMessage("成功");
        return r;
    }
 public R data(String key,Object value){
        this.data.put(key,value);
        return this;
    }

7.如何在service_edu中使用这个Json格式
和上面的一样不同模块直接代码的调用需要maven依赖一下,引入commonutils这个依赖

<dependency>
            <groupId>com.lys</groupId>
            <artifactId>commonutils</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

错误:查询所有讲师出了问题,低级错误,原因就是自己代码理论看太多实际太少了,一开始爆红500错误,翻查自己的代码发现用于存储data值的HashMap连对象都没创建!!!

 	@ApiModelProperty("是否成功")
    private Boolean success;//返回是否成功

    @ApiModelProperty("状态码")
    private Integer code;//返回枚举类中的状态码

    @ApiModelProperty("返回消息")
    private String message;//返回消息

    @ApiModelProperty("返回数据")
    private HashMap<String,Object> data = new HashMap<>();//返回数据,存放入键值对中
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破晓以胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值