初学SpringBoot,在使用Mybatis+Springboot工程搭建DEMO时遇到的两个问题

问题1:各种bean无法正常加载

报错信息:

Error creating bean with name "userController": Unstaisfied dendency expressed field 'userService'; nest …… ; 文档根元素“mapper”必须匹配 DOCTYPE 根  “null”。

原因是在Mybatis建立对应UserMapper对应的User.xml时,第二行缺少了一个xml描述信息。

 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  //启动类

你可能感兴趣的:(Springboot,Mybatis,bean加载错误,启动成功,接口无法访问)