2016-07-14 9 views
1

SpringブートV1.3.5を使用して新しいプロジェクトを設定しましたが、リポジトリをサービスに自動配線しようとするとNoSuchBeanDefinitionExceptionが発生します。私は他のプロジェクトがうまく動作するのと同じ方法を設定しているので、これは奇妙です。Spring NoSuchBeanDefinitionExceptionサービスへのリポジトリ

My Applicationクラス。

package api; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 

     System.out.println("-------------------"); 
     System.out.println("The API is running."); 
     System.out.println("-------------------"); 
    } 
} 

私のサービス。

package api.services; 

import api.entity.Project; 
import api.repository.ProjectRepository; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 

@Service 
public class ProjectService { 

    @Autowired 
    private ProjectRepository projectRepository; 

    /** 
    * Saves a project entity into the database. 
    * 
    * @param project Project 
    * @return Project 
    */ 
    public Project save(Project project) { 

     return this.projectRepository.save(project); 
    } 
} 

マイリポジトリ。

package api.repository; 

import api.entity.Project; 
import org.springframework.data.repository.CrudRepository; 
import org.springframework.stereotype.Repository; 

@Repository 
public interface ProjectRepository extends CrudRepository<Project, Integer> { 

    Project findByName(String name); 
} 

今私のサービスは、私のコントローラにautowiredますが、春には、何らかの理由で、私のリポジトリを好きにいないようです。

誰かが間違っている/紛失しているのを見ることはできますか?

ありがとうございました。

例外メッセージは、次のとおりです。

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private api.repository.ProjectRepository api.services.ProjectService.projectRepository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [api.repository.ProjectRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
+0

ProjectRepositoryの具体的な実装はありますか?インターフェイスだけをインスタンス化することはできません。 – Gandalf

+0

もちろん、インターフェースをインスタンス化することはできませんが、私はそれをインスタンス化していません。私はそれをオートワイヤリングしています。私は別のプロジェクトで同じ設定をして、それはうまく動作します。 Spring Data JPAは、アプリケーションを実行すると即座に実装を作成します。 " –

+0

私は類似のサンプルプロジェクトを作成しようとしましたが、ここでは(https://github.com/vamsilp/testProjects.git)、それは私のために働いていました。プロジェクトエンティティクラスを公開してください。 ProjectRepositoryが正しくない可能性があります。 –

答えて

0

は@Component代わりの@Repositoryを試してみてください。

+0

試しましたが、それでも同じ問題です。タイプに関係なく、コンポーネントスキャンですべてのステレオタイプが選択されたと思いましたか? –

0

よく、同じ方法を設定する他のプロジェクトをチェックしてください。最初に、私は春データjpaを使用していることに気付くので、@Repositoryアノテーションはインターフェイスを必要としません。スプリングブートはこれを自動的にスキャンするためです。最後に、あなたと同じ設定のこのプロジェクトを見る必要があると思います。 spring-boot-sample-data-jpa

+0

それが私が最初にしたことでした。 @Repositoryアノテーションなしで試してみましたが、問題は依然として続きます。ありがとう、私は見てみましょう。 –

+0

あなたのパッケージがデフォルトのスキャンされたパッケージでない場合、@EnableJpaRepositories( "dao用のパッケージ")をSpringBootRunnerに追加してみてください。 –

+0

私はすでにそれを試して、それは動作しませんでした。私のリポジトリパッケージが私のapiパッケージの一部であるので、それはとにかく必要ではありません。 –

関連する問題