Spring Boot:Consider defining a bean of type '*.*.Dao' in your configuration解決方案

SpringBoot在啓動項目的時候遇到了以下情況:

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

Description:

Field sysUserDao in com.iamapsycho.service.impl.SysUserServiceImpl required a bean of type 'com.iamapsycho.dao.SysUserDao' that could not be found.


Action:

Consider defining a bean of type 'com.iamapsycho.dao.SysUserDao' in your configuration.

SpringBoot啓動失敗,告訴我Bean配置失敗,爲什麼報錯呢?

Controller:

	package com.iamapsycho.controller;
	
	import java.util.List;
	
	import org.springframework.beans.factory.annotation.Autowired;
	import org.springframework.stereotype.Controller;
	import org.springframework.web.bind.annotation.RequestMapping;
	import org.springframework.web.bind.annotation.RequestMethod;
	import org.springframework.web.bind.annotation.ResponseBody;
	
	import com.iamapsycho.entity.SysUser;
	import com.iamapsycho.service.SysUserService;
	
	import io.swagger.annotations.Api;
	import io.swagger.annotations.ApiOperation;
	
	@Controller
	@Api(value = "sysUser接口")
	@RequestMapping("/sysuser")
	public class SysUserController {
		
		@Autowired
		SysUserService sysUserService;
		
		@ResponseBody
		@RequestMapping(value="/getList", method = { RequestMethod.GET, RequestMethod.POST })
	    @ApiOperation(value="獲取用戶列表", notes="用戶列表")    
		public List<SysUser> getList(){
			List<SysUser> list = sysUserService.getList();
			return list;
		}
	}

Service:

	package com.iamapsycho.service.impl;
	
	import java.util.List;
	
	import org.springframework.beans.factory.annotation.Autowired;
	import org.springframework.stereotype.Service;
	
	import com.iamapsycho.dao.SysUserDao;
	import com.iamapsycho.entity.SysUser;
	import com.iamapsycho.service.SysUserService;
	
	@Service
	public class SysUserServiceImpl implements SysUserService {
	
		@Autowired
		SysUserDao sysUserDao;
		
		@Override
		public List<SysUser> getList() {
			return sysUserDao.getList();
		}
	
	}

Dao:

	package com.iamapsycho.dao;
	
	import java.util.List;
	
	import com.iamapsycho.entity.SysUser;
	
	public interface SysUserDao {
	
		List<SysUser> getList();
	
	}

在網上看到網友說要用@Mapper註解,這才把問題解決了 ,至於具體原因,需要通過文檔來解釋。

解決方案一:

Dao層
添加:@Mapper

    package com.iamapsycho.dao;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Mapper;
    
    import com.iamapsycho.entity.SysUser;
    
    @Mapper
    public interface SysUserDao {
    
    	List<SysUser> getList();
    
    }

解決方案二(強烈建議使用):

Application(啓動類)
添加:@MapperScan(value = “com.iamapsycho.dao”)

	package com.iamapsycho;
	import org.mybatis.spring.annotation.MapperScan;
	import org.springframework.boot.SpringApplication;
	import org.springframework.boot.autoconfigure.SpringBootApplication;
	
	@SpringBootApplication
	@MapperScan(value = "com.iamapsycho.dao")
	public class Application {
	    public static void main(String[] args) {
	        SpringApplication.run(Application.class, args);
	    }
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章