Há um projeto web com Spring e MyBatis. Eu uso o IntelliJ IDEA para desenvolvimento. A IDEA não pode inspecionar corretamente os beans MyBatis e produz underscorings irritantes, embora o link para o Data Access Object esteja presente.
Comentário de inspeção:
Could not autowire. No beans of "ApplicationMapper" type found.
Configurações My Spring e MyBatis: Primavera:
<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>
Existe uma maneira de corrigir esse pequeno problema?
Respostas:
5 para resposta № 1@Repository
@Mapper
public interface ApplicationMapper {
vai fazer o truque
3 para resposta № 2
O plugin MyBatis atualizado é fixo e não tem esse problema.
3 para resposta № 3
Eu tenho o mesmo problema. No meu erro de inspeção Intelli J,
Não foi possível autowire. Nenhum tipo de "ApplicationMapper" encontrado. menos ... (Ctrl + F1) Verifica problemas de autowiring em uma classe de bean.
no meu caso, inspeções desativadas. (Alt + Enter correção rápida ou alterar as configurações)
Configurações - Editor - Inspeções - Spring - Spring Core - Código - Autowiring for Bean Class - disable
(Atualização 2015.04.27) Após o plugin myBatis instalado, eu resolvi este problema também
3 para resposta № 4
Outra maneira é adicionar @Component
ou @Repository
para sua interface de mapeamento.
Tal como:
@Repository
public interface ApplicationMapper {
//...
}
0 para a resposta № 5
Que tal definir uma nova anotação por conveniência:
@Repository
@Mapper
public @interface MyMapper{
}
@MyMapper
public interface ApplicationMapper {
//...
}
0 para a resposta № 6
No meu caso, a dose do plugin myBatis não funciona. Adicionando o seguinte antes da declaração da variável irá funcionar.
@Autowired
@SuppressWarnings("SpringJavaAutowiringInspection")
private ApplicationMapper applicationMapper;@Autowired