hap-book-demo 查错过程记录

写在前面

这个demo主要记录排错过程,都是低级错误,有点愧疚。

https://github.com/guoyongqin/hap-todo-service-parent/tree/master/hap-book-service

项目需求:
1. 完成基本CRUD(增删改查)
2. 完成多表关联查询

记录排查错误过程(调Bug)

1. spring boot 报错 Unable to start embedded container;

https://blog.csdn.net/fhhffchffy/article/details/50377934

运行时候报错,查资料后发现是在主函数BookServiceApplication页面没有添加
@EnableEurekaClient
@SpringBootApplication
这两个注解

@EnableEurekaClient
@SpringBootApplication
public class BookServiceApplication {
    public static void main(String[] args){
        SpringApplication.run(BookServiceApplication.class,args);
    }
}

2. Spring Boot排查 Cannot determine embedded database driver class for database type NONE

https://blog.csdn.net/hengyunabc/article/details/78762097

文中的方法没有解决问题,但是确实可以提供思路
最终是
1. 配置文件bootstrap.yml中的MyBatisclasspath路径与文件路径不匹配。

server:
  port: 8051
mybatis:
  mapperLocations: classpath*:/mapper/*.xml
  configuration:
    mapUnderscoreToCamelCase: true
  1. 在application-default.yml文件中修改了数据库配置代码的缩进距离
spring:
  datasource:
    url: jdbc:mysql://rm-2zeah762u44mddngavo.mysql.rds.aliyuncs.com/hap_demo_service_todo?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: ********
    password: ********
  eureka:
    client:
      serviceUrl:
        defaultZone: http://localhost:8000/eureka
swagger:
    oauthUrl: http://localhost:8080/oauth/oauth/authorize

3. create方法实现失败

在swagger中新增数据失败,提示id.isDelete

通过debug查错,发现是TAuthorServiceImpl实现类的问题,在create方法中使用了getId()的方法,然而id字段在数据库中是自增的,所以getId()取出的是null空值,所以会引起空指针异常。

@Override
    public TAuthor create(TAuthor tAuthor) {
        tAuthor.setAuthorUuid(UUID.randomUUID().toString());
        tAuthor.setProcessingStatus("created");
        tAuthor.setReferenceSource("gyq");
        if (findById(tAuthor.getId()) != null) {  //这里取出的是null
            throw new HapException("error.author.authorIdExist");
        }
        if (insert(tAuthor) != 1) {
            throw new HapException("error.author.insertNotOne");

        }
        return selectByPrimaryKey(tAuthor.getId());
    }

将该方法删除,就可以正常运行了。

//删除的内容
if (findById(tAuthor.getId()) != null) {
            throw new HapException("error.author.authorIdExist");
        }

4. OrderController中orderService报错

今天发现其实这个问题是经常出现的,我的这个解决方式并不是问题的根源,详细的看链接,这个是别人整理的:
https://blog.csdn.net/gaoshan12345678910/article/details/80973908

报错信息:

2018-08-09 18:18:44.129 ERROR [hap-book2-service,,,] 4860 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field orderService in com.hand.hap.cloud.book.controller.OrderController required a bean of type 'com.hand.hap.cloud.book.service.OrderService' that could not be found.


Action:

Consider defining a bean of type 'com.hand.hap.cloud.book.service.OrderService' in your configuration.


Process finished with exit code 1
````

定位代码中:





<div class="se-preview-section-delimiter"></div>
@Autowired
private OrderService orderService;


查错之后发现是实现类中没有添加注解,添加之后就好了:






<div class="se-preview-section-delimiter"></div>

@Service
@Transactional(rollbackFor = HapException.class)
“`

总结:

  1. 在编写代码时候要注意文件路径匹配问题。
  2. 有些格式的文件代码,缩进要求严格,需要特别注意。
  3. 自增的字段,用getId()方法只能获取到null
  4. 注解的使用很重要,一旦缺失,就容易出现错误
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值