2016-06-02 20 views
0

私はSpring Boot Data Neo4jを使い、映画チュートリアルを終了しようとしています。私はこれを持ってERRORしかし、本当にどのようにデバッグするか分からない。エラーの概要:(1)Beanの作成中にエラーが発生しました。(2)フィールドをオートワイヤードできませんでした。どんな助けでも、ありがとう。Spring Boot DataとNeo4jを統合できません

マイファイルの構造を次のように

SpringBootApplication.java

package com.test.springdataneothree; 
 

 
import org.springframework.beans.factory.annotation.Autowired; 
 
import org.springframework.boot.CommandLineRunner; 
 
import org.springframework.boot.SpringApplication; 
 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
 

 
import com.test.services.MovieService; 
 

 
@EnableAutoConfiguration 
 
@SpringBootApplication 
 
public class SpringdataneothreeApplication implements CommandLineRunner { 
 
\t 
 
\t @Autowired 
 
\t MovieService movieService; 
 

 
\t public static void main(String[] args) { 
 
\t \t SpringApplication.run(SpringdataneothreeApplication.class, args); 
 
\t } 
 
\t 
 
\t @Override 
 
\t public void run(String... arg0) throws Exception { 
 
\t \t System.out.println("Main Spring Boot Class"); 
 
\t \t movieService.countMovie(); 
 
\t } 
 
}

Movie.java

package com.test.movie; 
 

 
import org.neo4j.ogm.annotation.GraphId; 
 
import org.neo4j.ogm.annotation.NodeEntity; 
 

 
@NodeEntity(label ="Movie") 
 
public class Movie { 
 

 
\t @GraphId 
 
    private Long id; 
 
\t 
 
\t String title; 
 
    int released; 
 
    String tagline; 
 
    
 
    
 
    public Movie() { } 
 

 
\t public Long getId() { 
 
\t \t return id; 
 
\t } 
 

 
\t public void setId(Long id) { 
 
\t \t this.id = id; 
 
\t } 
 

 
\t public String getTitle() { 
 
\t \t return title; 
 
\t } 
 

 
\t public void setTitle(String title) { 
 
\t \t this.title = title; 
 
\t } 
 

 
\t public int getReleased() { 
 
\t \t return released; 
 
\t } 
 

 
\t public void setReleased(int released) { 
 
\t \t this.released = released; 
 
\t } 
 

 
\t public String getTagline() { 
 
\t \t return tagline; 
 
\t } 
 

 
\t public void setTagline(String tagline) { 
 
\t \t this.tagline = tagline; 
 
\t } 
 
    
 
}

MovieService.java

package com.test.services; 
 

 
import org.springframework.beans.factory.annotation.Autowired; 
 
import org.springframework.stereotype.Service; 
 

 
import com.test.repositories.MovieRepository; 
 

 
@Service("MovieService") 
 
public class MovieService { \t 
 
\t 
 
\t @Autowired 
 
\t MovieRepository movieRepository; 
 

 
\t public void countMovie() { 
 
\t \t movieRepository.count(); 
 
\t \t 
 
\t } 
 

 
}

MovieRepository.java

package com.test.repositories; 
 

 
import java.util.Collection; 
 
import java.util.List; 
 
import java.util.Map; 
 

 
import org.springframework.data.neo4j.annotation.Query; 
 
import org.springframework.data.neo4j.repository.GraphRepository; 
 
import org.springframework.data.repository.query.Param; 
 
import org.springframework.stereotype.Repository; 
 

 
import com.test.movie.Movie; 
 

 
@Repository 
 
public interface MovieRepository extends GraphRepository<Movie> { 
 
\t 
 
\t Movie findById(long id); 
 
\t 
 
\t Movie findByTitle(@Param("title") String title); 
 

 
\t @Query("MATCH (m:Movie) WHERE m.title =~ ('(?i).*'+{title}+'.*') RETURN m") 
 
    Collection<Movie> findByTitleContaining(@Param("title") String title); 
 

 
    @Query("MATCH (m:Movie)<-[:ACTED_IN]-(a:Person) RETURN m.title as movie, collect(a.name) as cast LIMIT {limit}") 
 
    List<Map<String,Object>> graph(@Param("limit") int limit); 
 

 
}

MyNeo4jConfiguration.java

package com.test.configuration; 
 

 
import org.neo4j.ogm.session.SessionFactory; 
 
import org.springframework.context.annotation.ComponentScan; 
 
import org.springframework.context.annotation.Configuration; 
 
import org.springframework.data.neo4j.config.Neo4jConfiguration; 
 
import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; 
 
import org.springframework.scheduling.annotation.EnableScheduling; 
 
import org.springframework.transaction.annotation.EnableTransactionManagement; 
 

 
@EnableTransactionManagement 
 
@EnableScheduling 
 
@ComponentScan(basePackages = {"com.test"}) 
 
@Configuration 
 
@EnableNeo4jRepositories(basePackages = "com.test.repositories") 
 
public class MyNeo4jConfiguration extends Neo4jConfiguration { 
 

 
\t @Override 
 
\t public SessionFactory getSessionFactory() { 
 
\t \t return new SessionFactory("com.test.movie"); 
 
\t } 
 

 
}

+0

https://github.com/neo4j-examples/sdn4-universityように、自動配線フィールド上@Qualifierアノテーションを使用することであるSDNのための新しいスプリングブートスターターを用いた例であります – Luanne

答えて

0

あなたは自動配線に問題があります。MovieService上の注釈が間違っているが、それは次のようになります。

@Service("movieService") 

またはちょうど

@Service 

大文字の名前のBeanを挿入しようとしていますが、コンテキストが見つからない(注入は名前で行われます)。別の解決策は、

@Autowired 
@Qualifier("MovieService") 
MovieService movieService; 
関連する問題