вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет подходящего компонента типа - PullRequest
0 голосов
/ 03 апреля 2020

Я работаю над простым проектом spring + mybatis, но обнаружил неожиданную ошибку и попытался найти ответ от Google, но потерпел неудачу в течение почти одного дня. Сейчас болит голова. Мне нужно заручиться вашей поддержкой, чтобы решить эту проблему, иначе я не мог хорошо выспаться. Спасибо за вашу поддержку.

Сообщение об ошибке выглядит следующим образом:

Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userDao'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mybatis.dao.UserDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130)

enter image description here

Скачать исходный код проекта здесь !!

Пароль для распаковки: helloworld

  1. Загрузить исходный код
  2. Нажмите TestController, щелкните правой кнопкой мыши и запустите его, после чего вы увидите та же проблема.

Вот сценарий создания таблицы для этого проекта.

CREATE DATABASE mybatis;
USE mybatis;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `uid` tinyint(2) NOT NULL AUTO_INCREMENT,
  `uname` varchar(20) DEFAULT NULL,
  `usex` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Благодарим вас за помощь. Спасибо !!!

1 Ответ

0 голосов
/ 03 апреля 2020

MapperScannerConfigurer - это тот, который сканирует ваши классы @Mapper и должен генерировать для них Spring Beans.

Я заметил, что имя basePackage неверно:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.dao"/><!-- <- com.mybatis.dao -->
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
...