java的socket通信和springboot自动装配问题

79 阅读1分钟

又是写bug修bug的一天

  1. java使用socket通信无法读到传输的对象, 表现为读取数据时抛出ClassNotFound异常 问题原因: socket通信中传输的对象所在包不同, 原结构为:

com.chatroom.client.entity.message com.chatroom.server.entity.message

解决办法: 更改包结构, 让实体类的所在包相同, 改后的结构为:

com.chatroom.entity.message com.chatroom.entity.message

  1. 使用springboot时自动注入为空, 这个地方可以检查一下使用自动装配的类是否加注释了 (比如controller里面使用service的自动装配, controller和service都要有注释)

如下图, 没有加@RestController注释, 则自动装配会报错 没有加注释 加上后报错消失 加上了注释

  1. mapper无法自动装配, 这是mybatis和springboot版本不搭配的问题, 开始会报下面这个错 mybatis.png 看网上的有的方法是在启动类上面加一个@MapperScan的注解, 但是加上以后会报一个关于sqlsession的错误, 最终的解决办法是修改mybatis的版本, 下面是mybatis和springboot版本的搭配:

    springbootmybatis
    2.x1.0.x
    3.x3.0.x