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);
}
}