admin管理员组文章数量:1535472
***************************
APPLICATION FAILED TO START
***************************
Description:
Field mapper in com.demo.service.impl.UserServiceImpl required a bean of type 'com.demo.mapper.UserMapper' that could not be found.
Action:
Consider defining a bean of type 'com.demo.mapper.UserMapper' in your configuration.
SpringBoot启动失败,告诉我Bean配置失败,楼主看了看 该用的注解都用上了 这是咋的回事嘞?
mapper(Dao层)
1 package com.demo.mapper; 2 3 import org.springframework.context.annotation.ComponentScan; 4 import org.springframework.stereotype.Repository; 5 6 import com.demo.domain.User; 7 8 //@Component 9 @Repository 10 public interface UserMapper { 11 12 public User gYeMian(User u); 13 14 public int sYeMian(User u); 15 16 }
service
package com.demo.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.demo.domain.User; import com.demo.mapper.UserMapper; import com.demo.service.UserService; @Service(value = "userService") public class UserServiceImpl implements UserService{ @Autowired private UserMapper mapper; @Override public User gYeMian(User u) { User user = mapper.gYeMian(u); return user; } @Override public int sYeMian(User u) { int i = mapper.sYeMian(u); return i; } }
controller
1 package com.demo.controller; 2 3 import javax.servlet.http.HttpServletRequest; 4 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.stereotype.Controller; 7 import org.springframework.web.bind.annotation.RequestMapping; 8 import org.springframework.web.bind.annotation.ResponseBody; 9 10 import com.demo.domain.User; 11 import com.demo.service.UserService; 12 13 @Controller 14 @RequestMapping(value = "/uc") 15 public class UserController { 16 17 @Autowired 18 private UserService userService; 19 20 @ResponseBody 21 @RequestMapping("/stemp.htm") 22 private String sYeMian(String muBan, HttpServletRequest request){ 23 24 User u = new User(); 25 u.setMuBan(muBan); 26 System.out.println("muBan=" + muBan); 27 int i = userService.sYeMian(u); 28 29 if (i>0){ 30 return "存储成功"; 31 } 32 return "存储失败"; 33 } 34 35 }
后来在网上看到网友说要用@Mapper注解,这才把问题解决了 至于具体原因,楼主还需要好好看看文档再来解释。
解决方案一:
mapper(Dao层)
1 package com.demo.mapper; 2 3 import org.apache.ibatis.annotations.Mapper; 4 5 import com.demo.domain.User; 6 7 @Mapper 8 public interface UserMapper { 9 10 public User gYeMian(User u); 11 12 public int sYeMian(User u); 13 14 }
解决方案二:
Application(启动类)
1 package com.demo; 2 3 import org.mybatis.spring.annotation.MapperScan; 4 import org.springframework.boot.SpringApplication; 5 import org.springframework.boot.autoconfigure.SpringBootApplication; 6 7 @SpringBootApplication 8 @MapperScan(value = "com.demo.mapper") 9 public class App 10 { 11 public static void main(String[] args) throws Exception { 12 SpringApplication.run(App.class, args); 13 } 14 }
原因:在mybatis-spring-boot-autoconfigure的jar包中有一个类 MybatisAutoConfiguration,在这个类中的registerBeanDefinitions方法告诉了我们
1 @Override 2 public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { 3 4 logger.debug("Searching for mappers annotated with @Mapper"); 5 6 ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry); 7 8 try { 9 if (this.resourceLoader != null) { 10 scanner.setResourceLoader(this.resourceLoader); 11 } 12 13 List<String> packages = AutoConfigurationPackages.get(this.beanFactory); 14 if (logger.isDebugEnabled()) { 15 for (String pkg : packages) { 16 logger.debug("Using auto-configuration base package '{}'", pkg); 17 } 18 } 19 20 scanner.setAnnotationClass(Mapper.class); 21 scanner.registerFilters(); 22 scanner.doScan(StringUtils.toStringArray(packages)); 23 } catch (IllegalStateException ex) { 24 logger.debug("Could not determine auto-configuration package, automatic mapper scanning disabled.", ex); 25 } 26 }
本文标签: 解决方案definingSpringconfigurationtype
版权声明:本文标题:Spring Boot2:Consider defining a bean of type '*.*.*' in your configuration解决方案 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1725349332a1020198.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论