2017-11-15 5 views
0

私はSpring Bootを使用していないので、私の質問はこれとほとんど同じですが同じではない、です。 Can't Autowire @Repository annotated interface in Spring Boot 私はできません@EnableJpaRepositories私の場合は、スプリングブートランナーはありません。私はSpringMVCコントローラをWebアプリケーションの中に持っています。春のデータ:@Repository JpaRepositoryのインターフェースをAutowireできません: "少なくとも1つのBeanがautowire候補になります"

私は通常の旧式のSpringMVCアプリケーションで、単独でSpringデータを使用しています。

私は春データのDAOインタフェース@Repositoryに注意し、

Caused by: No qualifying bean of type 'com.myapp.dao.QuestionsDAO' available: 
expected at least 1 bean which qualifies as autowire candidate. 

エラーを取得しています:

@Repository 
public interface QuestionsDAO extends JpaRepository<Question, Long> { 

    public String findById(Long id); 

} 

Aサービスは、このDAOを使用する必要があり、autowired:

コンポーネントを

public class SchedulingService { 

    @Autowired 
    QuestionsDAO questionsDAO; 

    public String findLabelById(Long id) { 

     return questionsDAO.findById(id); 

    } 

} 

コンポーネントスキャンが有効になっており、他のすべてに対して機能します。

<context:component-scan base-package="com.myapp" /> 

春のデータはSpringブートのみで使用できますか?

答えて

0

注釈@EnableJpaRepositoriesは、Spring Dataに由来し、SpringBootとは関係ありません。だから、@Configuration@EnableJpaRepositoriesと注釈を付けたクラスを持つことは十分でしょう。

あなたがXMLでそれをしたい場合は、

<jpa:repositories base-package="com.acme.repositories" /> 

を追加する必要があります。また、注釈が別の目的を持っていることを、あなたのインターフェイス上@Repository注釈を必要としません。

+0

しかし、私はいくつかのSpringアノテーションが必要です。そうしないと、Autowireは機能しません。リポジトリインタフェースに@Componentを提案していますか? –

+0

いいえ、 '@ EnableJpaRepositories'または' 'が処理します。設定されているパッケージをスキャンし、Spring Dataインターフェイスの1つを拡張するすべてのインターフェイスを確認します。したがって、インターフェース自体に注釈は必要ありません。 – dunni

関連する問題