2013-01-18 15 views
7

Używam IDEA IntelliJ 12.0.2.Nie można przeprowadzić autowyrazu. Nie znaleziono fasoli typu Neo4jTemplate

Moja aplikacja-context.xml jest:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd"> 

    <neo4j:config storeDirectory="../embeddedNeo4j"/> 

    <context:spring-configured/> 

    <context:annotation-config/> 
    <context:component-scan base-package="models"/> 

</beans> 

Moja Klasa testu jest:

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.data.neo4j.support.Neo4jTemplate; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import org.springframework.transaction.annotation.Transactional; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration({"/application-context.xml"}) 
@Transactional 
public class MyTest { 

    @Autowired 
    Neo4jTemplate template; //=> Could not autowire.No beans of Neo4jTemplate type found 

    //my tests here 
} 

Czy mogę pominięte pewne konfiguracje?

Wydaje się stary problem z IntelliJ: http://www.markvandenbergh.com/archives/260/autowiring-spring-bean-in-intellij/

+0

Nie wynika jednoznacznie, czy aplikacja nie działa, czy jest to po prostu błąd IDE, ale aplikacja działa zgodnie z oczekiwaniami. –

+0

@Andrey Polunin Rzeczywiście, aplikacja kompiluje, ale IntelliJ ostrzega o tym "błędzie". – Mik378

Odpowiedz

7

Dzieje się tak wiele w IntelliJ z fasoli Wiosna danych. IntelliJ zbyt dobrze nie analizuje instancji w konfiguracjach przestrzeni nazw Spring Data. Jako przykład (oprócz Twojego) IntelliJ nie będzie poprawnie sprawdzał klasy ed @Autowired lub @Inject, która rozszerza dane sprężynowe MongoRepository. Jak już zauważyłeś, nie szkodzi to twojej aplikacji, ale jest dość irytujące podczas tworzenia. Oto w jaki sposób można stłumić „błąd”:

@SuppressWarnings("SpringJavaAutowiringInspection") 
@Autowired 
Neo4jTemplate template; 

można osiągnąć to samo, klikając czerwoną żarówkę (wskaźnik błędu przy najechaniu na czerwono podkreślony elementu) Wybór „«autowiring dla Bean klasy»inspekcja opcje ", a następnie" Wyłącz dla pola ". Lub, jeśli chcesz go wyłączyć dla całej klasy, wybierz "Pomiń dla klasy".