一个Simple而又SB的问题 @Autowired Field xxxDao in xxx requird a bean of type

问题描述:

建立了一个简单的Springboot项目,对Oracle数据库进行访问,查询数据,返回JSON。

代码如下:

Application.java

package com.bocom;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 *
 * @since 2017年12月27日下午2:18:18
 * @author shanming.yang
 *
 */
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
		
	}
}
XiaomingController.java

package com.bocom.controller;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.bocom.service.XiaomingService;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

/**
 *
 * @since 2017年12月27日下午2:28:16
 * @author shanming.yang
 *
 */
@Api(value = "XiaomingController",description = "测试API")
@RestController
public class XiaomingController {
	@Autowired
	private XiaomingService xiaomingService;
	
	@RequestMapping(value="/abc/{jqbh}",method = RequestMethod.GET)
	public Map<String,Object> querySth(@PathVariable("jqbh") String jqbh){
		return xiaomingService.getJQById(jqbh);  
	}
}
XiaomingService.java

package com.bocom.service;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.bocom.dao.XiaomingDao;

/**
 *
 * @since 2017年12月27日下午3:43:21
 * @author shanming.yang
 *
 */
@Service
public class XiaomingService {

	@Autowired
	private XiaomingDao xiaomingDao;
	
	/**
	 * 根据id获取警情详细信息
	 * @param id 警情id
	 */
	public Map<String,Object> getJQById(String jqbh) {
		Map<String,Object> map = xiaomingDao.getJQById(jqbh);
		return map;
	}
}
XiaomingDao.java
package com.bocom.dao;

import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
/**
 *
 * @since 2017年12月27日下午3:48:10
 * @author shanming.yang
 *
 */
@Mapper
public interface XiaomingDao {

	/**
	 * 根据id获取警情详细信息
	 * @param id 警情id
	 */
	public Map<String,Object> getJQById(String jqbh);
}
XiaomingDao.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bocom.dao.XiaomingDao">
	<!-- 根据id获取警情详细信息 -->
	<select id="getJQById" resultType="hashMap">
		SELECT *
		FROM t_jqxx
		<![CDATA[
			WHERE id = #{jqbh,jdbcType=VARCHAR} AND ROWNUM<2
		]]>
	</select>
</mapper>

项目结构:


项目运行时报错:

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

Description:

Field xiaomingDao in com.bocom.service.XiaomingService required a bean of type 'com.bocom.dao.XiaomingDao' that could not be found.


Action:

Consider defining a bean of type 'com.bocom.dao.XiaomingDao' in your configuration.

解决方式:

注意上面XiaomingDao.java代码中的import org.apache.ibatis.annotations.Mapper;

就是它,引错包了,为什么会引错包呢,在编写DAO这个文件的时候我没有在POM中引用

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.1.1</version>
</dependency>
所以我在写DAO时,使用Ctrl+shift+o,自动引入了包:org.mapstruct.Mapper,不知道是什么鬼包,但肯定不是我想要的,所以启动程序时就报错了。

所以,建议在使用前把需要用到的包全都在pom.xml中依赖好,再进行开发,否则出现这样的问题,很难排查。

虽然问题解决了,但觉得这个问题实在太简单了,结果花了半天时间去排查问题,实在很SB,踩过的坑,感谢同事的帮助,一击即中,直中要害。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值