问题1:各种bean无法正常加载
报错信息:
Error creating bean with name "userController": Unstaisfied dendency expressed field 'userService'; nest …… ; 文档根元素“mapper”必须匹配 DOCTYPE 根 “null”。
原因是在Mybatis建立对应UserMapper对应的User.xml时,第二行缺少了一个xml描述信息。
<!DOCTYPE> mapper PUBBLIC "-//mybatis.org//DTD Mapper 3.0//EN " "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
问题2: SpringBoot工程启动成功,但是接口无法访问到
问题描述:
启动Springboot 工程后无错误信息,通过postman访问接口无反应,检查Controller中的@RestController标签,并没有错误。检查是否配置了context-path,也没有问题。
问题原因:Springboot启动类位置不对
SpringBoot 启动时,默认注解扫描的范围是Application.java类的同级和子目录。
|-com.xxx.demo
|-controller
|-UserController.java
|-domian
|-User.java
|-mapper
|-UserMapper.java
|-starter
|-Application.java //启动类
如图,我在建立启动类时参照以前看到过的建立了package包用来放start类,但是由于SpringBoot默认的注解扫描策略,导致Controller中的接口没有被自动识别,因此访问接口无反应。
解决方法一:
如果需要这样的格式需要制定Springboot的扫描地址
在启动类上加入
@SpringBootApplication
@ComponentScan("com.xxx.demo") //申明需要扫描的范围
public class Application{
public static void main( String[] args ){
SpringApplication.run(Application.class,args);
}
}
解决方法二:
移动启动类Application类的位置,使其能默认导入能扫描到注解。
|-com.xxx.demo
|-controller
|-UserController.java
|-domian
|-User.java
|-mapper
|-UserMapper.java
|-Application.java //启动类