Идея проверяет бин батис маппер неправильно

Есть веб-проект с Spring и MyBatis. Я использую IntelliJ IDEA для разработки. IDEA не может правильно проверять bean-компоненты MyBatis и вызывает раздражающее подчеркивание, хотя ссылка на объект доступа к данным присутствует.

Комментарий инспекции:

 Could not autowire. No beans of 'ApplicationMapper' type found.

Мои настройки Spring и MyBatis: Spring:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation" value="classpath:spring/mybatis-config.xml"/>

</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.db.gbs.gbsapps.rds.backend.model.integration.mapping"/>
</bean>

mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <mappers>
        <mapper resource="mybatis/ApplicationMapper.xml"/>
    </mappers>
</configuration>

Есть ли способ исправить эту маленькую проблему?

7 ответов

Решение

Обновленный плагин MyBatis исправлен и не имеет этой проблемы.

@Repository
@Mapper 
public interface ApplicationMapper {

сделает свое дело

Другой способ это добавить @Component или же @Repository к вашему интерфейсу картографа.

Такие как:

@Repository
public interface ApplicationMapper {
    //...
}

У меня та же проблема. В моей ошибке проверки Intelli J,

Не удалось автопровода. Бины типа ApplicationMapper не найдены. less... (Ctrl+F1) Проверяет проблемы с автопроводкой в ​​классе бобов.

в моем случае отключены проверки. (Alt + Enter для быстрого исправления или изменения настроек)

Настройки - Редактор - Проверки - Spring - Spring Core - Код - Автопроводка для класса Bean - отключить

(Обновление от 2015.04.27) После установки плагина myBatis я тоже решил эту проблему

Как насчет определения новой аннотации для удобства:

@Repository
@Mapper
public @interface MyMapper{

}

@MyMapper
public interface ApplicationMapper {
    //...
}

В моем случае плагин myBatis не работает. Добавление следующего до объявления переменной будет работать.

@Autowired
@SuppressWarnings("SpringJavaAutowiringInspection")
private ApplicationMapper applicationMapper;@Autowired
      @Resource
UserMapper userMapper;

Другая связанная вещь: ресурс против автопроводки

Другие вопросы по тегам