Description:
Field mapper in com.kaigejava.kgblog,service.impl.UserServiceImpl required a bean of type 'com.kaigejava.kgblog.dao.UserDao' that could not be found.
Action:
Consider defining a bean of type 'com.kaigejava.kgblog.dao.UserDao' in your configuration.
SpringBoot启动失败,告诉我Bean配置失败,楼主看了看 该用的注解都用上了 这是咋的回事嘞?
先看错误的:
错误的
//@Component
@Repository
public interface UserMapper {
int insert(UserDomain record);
List selectUsers();
}
这两个注解都是用了,为什么还会报错呢?
查询:
解决方案一:
后来在网上看到网友说要用@Mapper注解,这才把问题解决了
于是修改:
解决方案一
/** * 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类
* * 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id
* 也就是说这个接口是不支持重载的 */
@Mapper
public interface UserDao {
int insert(UserDomain record);
List selectUsers();
}
重新启动,启动正常。访问ok.
解决方案二:
先看失败之前的Application(启动类):
解决方案二 错误前
@SpringBootApplication
public class KgblogApplication {
public static void main(String[] args) {
SpringApplication.run(KgblogApplication.class, args);
}
}
根据错误提示,没有UserDao这个bean.那么我们就在启动类上将该报扫描进去:
解决方案二
//@SpringBootApplication
@SpringBootApplication
@MapperScan(value = {"com.kaigejava.kgblog.dao"})
public class KgblogApplication {
public static void main(String[] args) {
SpringApplication.run(KgblogApplication.class, args);
}
}
说明:如果使用@Mapper这个注解的话,每个dao都需要添加麻烦。
而解决方案二使用@MapperScan就可以很好的解决该问题的。
欢迎访问凯哥个人网站:http://kaigejava.com/article/detail/161