解决spring boot启动不成功解决方法
之前在搭建的时候没怎么注意这块。新创建项目成功后,作为项目启动类的Application在com.example.demo包下面,然后我写了一个Controller,然后包的路径是com.example.controller用的@RestController 注解去配置的controller,然后路径也搭好了,但是浏览器一直报404。最后找到原因是Spring Boot只会扫描启动类当前包和以下的包 ,就是说现在我启动类的包是在com.example.demo下面,然后他就只会扫描com.example.demot或者com.example.demo.*下面所以的包,所以我的Controller在com.example.controller包下面Spring Boot就没有扫描到。
解决办法
方法一:
以启动类的包路径作为顶层包路径,列如启动类包为com.example.demo,那么Controller包路径就为com.example.demo.controller。
方法二:
在启动上方添加@ComponentScan注解,此注解为指定扫描路径,例如:@ComponentScan(basePackages = {“com.example.demo,com.example.controller”}) 多个不同的以逗号分割。
如果是下例的报错信息
其解决方案:
检查tomcat启动是否OK。
检查url对应的服务端资源是否匹配(客户端url与controller定义url)。
检查controller的包结构(所在包应在主启动类所在包的同包或子包中)。
注意项目工程的包结构,主启动类必须在最外层
500错误
500错误的重点是看这句(返回方法资源找不到)
This application has no explicit mapping for /error, so you are seeing this as a fallback.
其解决方案:
检查返回值名称是否正确
检查JsonResult封装
检查application.properties配置数据库文件
如都是正确的就检查注解
需要有两个注解才能正常访问
问题分析:检查服务端要访问的方法上是否有@ResponseBody注解.
@RequestMapping(“findObjects”)
@ResponseBody
抱错的类型有太多种,如下是一些项目遇到的问题跟解决方法就不写那么仔细了
测试类
无法找到对应的Bean对象(NoSuchBeanDefinitionException)
问题分析:
检测key的名字写的是否正确。
检测spring对此Bean对象的扫描,对于dao而言。
使用有@Mapper注解描述或者在@MapperScan扫描范围之内。
以上都正确,要检测是否编译了。
绑定异常(BindingException)
接口的类全名与对应的映射文件命名空间不同。
接口的方法名与对应的映射文件元素名不存在。
检测映射文件的路径与application.properties或者application.yml中的配置是否一致。
以上都没有问题时,检测你的类和映射文件是否正常编译
反射异常(ReflectionException)
问题分析:
映射文件中动态sql中使用的参数在接口方法中没有使用@Param注解修饰
假如使用了注解修饰还要检测名字是否一致。
说明:当动态sql的参数在接口中没有使用@Param注解修饰,还可以借助_parameter这个变量获取参数的值(mybatis中的一种规范)
结果映射异常
问题分析:getRowCount元素可能没有写resultType或resultMap。
绑定异常
问题分析:绑定异常,检测findPageObjects方法参数与映射文件参数名字是否匹配
Bean创建异常
问题分析:应该是查询时的结果映射对的类全名写错了
请求方式不匹配405
问题分析:请求方式与控制层处理方式不匹配
响应结果异常406
服务端响应数据不正确,例如服务端没有注册将对象转换为JSON串的Bean
请求参数异常
问题分析:客户端请求参数中不包含服务端控制层方法参数或格式不匹配。
JS编写错误
问题分析:点击右侧VM176:64位置进行查看
JS编写错误
问题分析:找到对应位置,检测data的值以及数据来源
找到对应位置,假如无法确定位置,可排除法或打桩,debug分析。
问题分析:调用length方法的对象有问题,可先检测下对象的值
问题分析:检测record定义或赋值的地方