我遇到以下异常:
org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为[pers.panxin.springboot.demo.mapper.UserMapper]的限定bean:预计至少有一个bean可以作为此依赖项的autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}
控制器:
@Controller
public class HelloController {
@Autowired
private UserService userService;
@RequestMapping("/userList")
@ResponseBody
public String getAllUser(){
return "userList : "+userService.getAllUser().toString();//+list.toString();
}
}
服务:
public interface UserService {
public String getString();
public List<User> getAllUser();
}
ServiceImpl:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public String getString() {
return "something else ... ";
}
@Override
public List<User> getAllUser() {
return userMapper.getAllUser();
}
}
映射器接口:
@Service
public interface UserMapper {
/**
* @return
*/
public List<User> getAllUser();
}
应用程序的主要课程
@ComponentScan
@EnableAutoConfiguration
@SpringBootApplication
public class ApplicationStarter {
public static void main(String[] args) {
SpringApplication.run(ApplicationStarter.class, args);
}
}
我的代码中是如何发生异常或出错的?
答案 0 :(得分:0)
1。 我不确定您是否使用mybatis-spring库。如果您尝试将MyBatis与Spring集成,则应该使用它。因此,请确保将其作为依赖项。
2。 当mybatis-spring作为依赖项时,只需将此批注添加到配置类:
@MapperScan("package.where.mappers.are.located")
这是因为mybatis-spring对MyBatis映射器进行了单独扫描。此外,您应该从映射器中删除@Service
注释,因为如果这是单独的mybatis-spring扫描。
编辑:
正如@Persia指出的那样,您可以使用mybatis-spring-boot-starter库将mybatis-spring依赖项拉入Spring Boot项目。
答案 1 :(得分:0)
今天得到同样的错误。检查bean配置org.mybatis.spring.mapper.MapperScannerConfigurer
和org.mybatis.spring.SqlSessionFactoryBean
。我错误地输入了前一个的“basePackage
”值和第二个的“typeAliasesPackage
”值。修好路径后,工作正常。像这样:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="package.path.to.your.model"/>
<property name="mapperLocations" value="classpath*:mappers/*.xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="package.path.to.your.dao"/>
</bean>
答案 2 :(得分:0)
使用
添加MappedTypes和@MapperScan代码如下所示
@MappedTypes({UserMapper.class})
@MapperScan(&#34; package.where.mappers.are.located&#34)