我正在关注this tutorial,我在启动申请时遇到了一些麻烦。
当我在后端文件夹中运行mvn spring-boot:run
时,出现以下错误:
com.movieseat.services.impl.MovieServiceImpl中的字段movieRepository需要一个无法找到的“com.movieseat.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> {}
使用以下结构:
这是我的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.*")
会使所有存储库都可访问。但我做错了。
答案 0 :(得分:1)
不使用*
(通配符),
@EnableJpaRepositories("com.movieseat.repositories")
确保@Entity
上有Movie
注释。