2016-05-12 13 views
0

このエラーに関する多くの質問がありましたが、私にとっては解決策はありません。メインメソッドを実行しているときにタイプの修飾Beanが定義されていません

私はSpringには新しく、プロジェクトのためにSpring Data for Neo4Jライブラリを使用しようとしています。私は、私はすべてが働いている方法を知っていることを確認するために迅速なスパイクを開始することを決めた、と私はそうのような主要な方法で簡単なアプリケーションクラスを設定します。私は、同様の構成のクラスを設定している

package org.example.neo4jSpike; 

import org.example.neo4jSpike.domain.Actor; 
import org.example.neo4jSpike.repositories.ActorRepository; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.AnnotationConfigApplicationContext; 
import org.springframework.stereotype.Component; 

/** 
* Hello world! 
* 
*/ 
@Component 
public class App 
{ 
    @Autowired 
    private ActorRepository actors; 

    @SuppressWarnings("resource") 
    public static void main(String[] args) 
    { 
     ApplicationContext context = new AnnotationConfigApplicationContext(SpikeConfiguration.class); 
     App a = context.getBean(App.class); 
     a.init(); 
    } 

    private void init(){ 
     Actor michaelDouglas = actors.save(new Actor("Michael Douglas")); 
     System.out.println("Hello World!"); 

     System.out.println(michaelDouglas.getId()); 
     System.out.println("Total people: " + actors.count()); 
    } 
} 

package org.example.neo4jSpike; 

import org.neo4j.ogm.session.Session; 
import org.neo4j.ogm.session.SessionFactory; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Scope; 
import org.springframework.context.annotation.ScopedProxyMode; 
import org.springframework.data.neo4j.config.Neo4jConfiguration; 
import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 

@Configuration 
@EnableNeo4jRepositories(basePackages = "org.example.neo4jSpike.repositories") 
@EnableTransactionManagement 
public class SpikeConfiguration extends Neo4jConfiguration{ 
    @Bean 
    public SessionFactory getSessionFactory() { 
     // with domain entity base package(s) 
     return new SessionFactory("org.example.neo4jSpike.domain"); 
    } 

    // needed for session in view in web-applications 
    @Bean 
    @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) 
    public Session getSession() throws Exception { 
     return super.getSession(); 
    } 
} 

私のリポジトリとドメインクラスのコードは必要に応じて追加しますが、それらはすべて同様の方法でセットアップされており、とても簡単です。

私がしようとmainを実行すると、しかし、私は

No qualifying bean of type [org.example.neo4jSpike.App] is defined

を取得し、私は@Componentとして定義され、それはすぐそこです、それは定義されていないどのように表示されません。私は何を誤解していますか?

+1

あなたは '@ Component'を持っていますが、設定クラスには' @ Component'と '@ ComponentScan'もありませんので、決して検出されません... –

+0

As私は、これは私の最初の春のアプリなので、私はそれを認識していないと言いました。ありがとう。それを答えに変えれば、私は同意します。それは私にこの問題をもたらしました。 – Paul

答えて

2

Springがクラスパッケージをスキャンしていない場合、@Componentアノテーションを置くかどうかは関係ありません。 @ComponentScanアノテーションを設定クラスに追加し、Appクラスがあるパッケージをスキャンするように設定することができます。あるいは、@Componentアノテーションを削除し、設定クラスでAppタイプのBeanを宣言することもできます。

これは役に立ちます。

関連する問題