com。**中的字段**需要一个无法找到'com。**'类型的bean

时间:2017-09-17 16:01:15

标签: spring

我正在关注this tutorial,我在启动申请时遇到了一些麻烦。

当我在后端文件夹中运行mvn spring-boot:run时,出现以下错误:

  

com.movi​​eseat.services.impl.MovieServiceImpl中的字段movieRepository需要一个无法找到的“com.movi​​eseat.repositories.MovieRepository”类型的bean。

MovieServiceIml.java

package com.movieseat.services.impl;

// Java imports
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

// Spring imports
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

// Project imports
import com.movieseat.models.Movie;
import com.movieseat.services.MovieService;
import com.movieseat.repositories.MovieRepository;

@Service
public class MovieServiceImpl implements MovieService {

    @Autowired private MovieRepository movieRepository;

    @Override public List<Movie> getAllmovies() {
        List<Movie> movies = new ArrayList<Movie>();
        Iterator<Movie> iterator = movieRepository.findAll().iterator();
        while (iterator.hasNext()) {
            movies.add(iterator.next());
        }

        return movies;
    }

}

MovieRepository.java

package com.movieseat.repositories;

// Java imports
import java.io.Serializable;

// Spring imports
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

// Project imports
import com.movieseat.models.Movie;

@Repository
public interface MovieRepository extends CrudRepository<Movie, Serializable> {}

使用以下结构:

  • COM
    • movieseat
      • Application.java
      • 控制器
        • MovieController.java
      • 模型
        • MovieModel.java
      • 存储库
        • MovieRepository.java
      • 服务
        • IMPL
          • MovieServiceImpl.java
        • MovieService.java

这是我的Application.java:

package com.movieseat;

// Spring importss
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@SpringBootApplication
@ComponentScan({"com.movieseat.*"})
@EnableJpaRepositories("com.movieseat.repositories.*")
public class Application extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

我的想法是使用@EnableJpaRepositories("com.movieseat.repositories.*")会使所有存储库都可访问。但我做错了。

1 个答案:

答案 0 :(得分:1)

不使用*(通配符),

尝试
@EnableJpaRepositories("com.movieseat.repositories")

确保@Entity上有Movie注释。