2

我得到以下异常:

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到符合条件的 bean [pers.panxin.springboot.demo.mapper.UserMapper] 类型的依赖项:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{@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();

}

服务实现:

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

}

异常是如何发生的或我的代码中有什么问题?

4

3 回答 3

0

今天遇到同样的错误。检查 bean 配置 org.mybatis.spring.mapper.MapperScannerConfigurerorg.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>
于 2016-03-24T08:46:40.157 回答
0

1.我不确定你是否使用了mybatis-spring库。如果你正在尝试将 MyBatis 与 Spring 集成,你应该使用它。因此,请确保将其作为依赖项。

2. 当你有 mybatis-spring 作为依赖时,只需在你的配置类中添加这个注解:

@MapperScan("package.where.mappers.are.located")

这是因为 mybatis-spring 对 MyBatis mappers 有单独的扫描。此外,您应该@Service从映射器中删除注释,因为如果这是单独的 mybatis-spring 扫描。

编辑:

正如@Persia 指出的那样,您可以使用mybatis-spring-boot-starter库将 mybatis-spring 依赖项拉入您的 Spring Boot 项目。

于 2016-01-17T15:04:56.663 回答
0

将 MappedTypes 与 @MapperScan 一起添加

代码如下所示

@MappedTypes({UserMapper.class})

@MapperScan("package.where.mappers.are.located")

于 2017-12-05T15:37:20.097 回答