Spring com.code.service.BookServiceImpl中的FieldBookRepository需要类型为';com.myAppp.code.respository.BookRepository';那是找不到的
我在尝试构建/运行SpringBoot应用程序时收到一个错误,如下所示: com.myApp.code.service.BookServiceImpl中的Field bookRepository需要一个类型为“com.myApp.code.respository.booksrepository”的bean,但找不到该bean。 所涉及的存储库是:Spring com.code.service.BookServiceImpl中的FieldBookRepository需要类型为';com.myAppp.code.respository.BookRepository';那是找不到的,spring,spring-boot,spring-data-jpa,Spring,Spring Boot,Spring Data Jpa,我在尝试构建/运行SpringBoot应用程序时收到一个错误,如下所示: com.myApp.code.service.BookServiceImpl中的Field bookRepository需要一个类型为“com.myApp.code.respository.booksrepository”的bean,但找不到该bean。 所涉及的存储库是: package com.myApp.code.respository; import com.myApp.code.model.Book; impo
package com.myApp.code.respository;
import com.myApp.code.model.Book;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface BookRepository extends CrudRepository<Book, Long> {
}
在有关控制员中,我有:
@Controller
@RequestMapping(value="book")
public class BookController {
@Autowired
private BookService bookService;
@Autowired
private PersonService personService;
@Autowired
private BookValidator bookValidator;
private final Logger LOG = LoggerFactory.getLogger(getClass().getName());
public BookController() {
}
// Displays the catalogue.
@RequestMapping(value="/catalogue", method=RequestMethod.GET)
public String index(Model model) {
LOG.info(BookController.class.getName() + ".catalogue() method called.");
// Populate catalogue.
bookService.list();
// model.addAttribute("books", books);
// Set view.
return "/catalogue";
}
在Application.java文件中,我有:
@SpringBootApplication
@EnableJpaRepositories
@ComponentScan(basePackages="com.myApp.code")
public class Application {
private final Logger LOG = LoggerFactory.getLogger(getClass().getName());
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
图书类为:
@Entity
@Table(name="BOOK")
public class Book implements Serializable {
// Fields.
@Id
@Column(name="id", unique=true, nullable=false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name="AUTHOR", nullable=false, length=50)
private String author;
@Column(name="TITLE", nullable=false, length=100)
private String title;
@Column(name="DESCRIPTION", nullable=false, length=500)
private String description;
@Column(name="ONLOAN", nullable=false, length=5)
private String onLoan;
@ManyToOne(fetch=FetchType.EAGER, targetEntity = Person.class)
@JoinColumn(name="Person_Id", nullable=true)
private Person person;
我的Maven POM文件是:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.14.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
org.springframework.boot
spring引导启动器数据jpa
org.springframework.boot
弹簧启动装置
org.springframework.boot
SpringBootStarterWeb
org.apache.derby
德比客户机
10.14.2.0
org.springframework.boot
弹簧起动试验
测试
有人能告诉我为什么我会收到这个消息吗?类
BookRepository
毕竟是存在的。Spring boot将只在同一个包或主类的子包(Application
)中查找存储库、实体和组件。您已经添加了@ComponentScan
以指向另一个包,但是您还应该将包添加到@EntityScan
和@EnableJpaRepositories
,例如:
@SpringBootApplication
@EnableJpaRepositories("com.myApp.code") // Add this
@EntityScan("com.myApp.code") // Add this
@ComponentScan(basePackages="com.myApp.code")
public class Application {
// ...
}
这一点也在本报告中提到
或者,您可以将主类放入com.myApp.code
本身
将您的
应用程序
类放在com.myApp.code
包中,而不是子包中戴纳姆
通过执行此操作,可以删除所有三个注释:
@SpringBootApplication//可以删除其他注释
公共类应用程序{
// ...
}
添加完整的堆栈跟踪请在com.myApp.code
包而不是子包中替换应用程序
类。@M Deinum。如果你想把你的评论转换成答案,我会接受的。非常感谢。
@SpringBootApplication
@EnableJpaRepositories("com.myApp.code") // Add this
@EntityScan("com.myApp.code") // Add this
@ComponentScan(basePackages="com.myApp.code")
public class Application {
// ...
}