[英]Spring boot Enable annotation ignored
我从Sprint Boot 5开始,但遇到了一些我不了解的问题。 也许有人可以为我阐明这一点。
我将Sprint Boot 2.1.7与Spring JPA和PostgreSQL一起使用。 我试图简单地启用JpaRepositories的发现。 当我有@EnableJpaRepositories
对我的“主”类(一个与@SprintBootApplication
注释),一切工作正常。 但是,我想学习一些好的做法,所以我想将配置分为两个关注点。 为此,我创建了一个JpaConfig
类来注册bean并为我的应用启用JPA功能。 但是,启用注释似乎被忽略了。
我试图在此配置文件中注册一个虚拟Bean,以确保组件扫描找到了我的类,并且它可以正常工作。 我已经在线看到了配置类上的启用属性的示例。 为什么对我不起作用? 我想念什么吗? 是在最新版本的Spring Boot中禁用的功能吗?
这是我的代码:
src / main / java / com / gretro / petclinic / PetClinicApplication.java
package com.gretro.petclinic;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication()
public class PetClinicApplication {
public static void main(String[] args) {
SpringApplication.run(PetClinicApplication.class, args);
}
}
src / main / java / com / gretro / petclinic / config / JpaConfig.java
package com.gretro.petclinic.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableJpaRepositories
@EnableTransactionManagement
public class JpaConfig {
}
src / main / java / com / gretro / petclinic / vets / repositories / VetSpecialtiesRepository.java
package com.gretro.petclinic.vets.repositories;
import com.gretro.petclinic.vets.models.VetSpecialty;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface VetSpecialtiesRepository extends JpaRepository<VetSpecialty, Long> {
}
这是我在启动时遇到的错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.gretro.petclinic.init.DataSeeder required a bean of type 'com.gretro.petclinic.vets.repositories.VetSpecialtiesRepository' that could not be found.
Action:
Consider defining a bean of type 'com.gretro.petclinic.vets.repositories.VetSpecialtiesRepository' in your configuration.
指定要扫描的包
@EnableJpaRepositories(basePackages = "com.gretro.petclinic.vets.repositories")
启用JPA存储库的注释。 默认情况下,将扫描带注释的配置类的包中的Spring Data存储库。
@EnableJpaRepositories
例如,启用对Spring Data JPA的自动配置支持需要了解JPA存储库的路径。 默认情况下,它将仅扫描主应用程序包及其子包以检测JPA存储库。 因此,如果将JPA存储库放置在主应用程序包或其子包下,则@EnableAutoConfiguration
会将其检测为自动配置基于Spring的配置的一部分。 如果存储库类未放置在主应用程序包或其子包下,则应在主应用程序配置类中使用@EnableJpaRepositories
批注声明相关存储库包。 然后,这将启用给定/声明的包中包含的JPA存储库。
启用JPA存储库的注释。 默认情况下,将扫描带注释的配置类的包中的Spring Data存储库。
e.g.
@EnableJpaRepositories(basePackages = "com.springbootdev.examples.jpa.repositories")
此描述将帮助您了解有关此注释的更多信息。
由于您使用的是Spring Boot,因此无需使用@EnableJpaRepositories
标记任何@Configuration
类。 Spring Boot的自动配置可以完成这项工作。
您可以安全地删除此注释。
@EnableJpaRepositories
会告诉Spring Boot您想控制Spring Data JPA Repositories配置。
如果是这种情况,则需要指定要扫描其存储库的软件包:
@EnableJpaRepositories(basePackages = {"com.gretro.petclinic.vets.repositories"})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.