亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring boot啟用注釋被忽略

Spring boot啟用注釋被忽略

德瑪西亞99 2023-07-13 13:51:28
我從 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.javapackage 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.javapackage 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@EnableTransactionManagementpublic class JpaConfig {}src/main/java/com/gretro/petclinic/vets/repositories/VetSpecialtiesRepository.javapackage com.gretro.petclinic.vets.repositories;import com.gretro.petclinic.vets.models.VetSpecialty;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;@Repositorypublic 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.
查看完整描述

3 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

指定要掃描的包

@EnableJpaRepositories(basePackages?=?"com.gretro.petclinic.vets.repositories")

用于啟用 JPA 存儲庫的注釋。默認情況下會掃描 Spring Data 存儲庫的帶注釋的配置類的包。


查看完整回答
反對 回復 2023-07-13
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

例如,啟用 Spring Data JPA 的自動配置支持需要知道 JPA 存儲庫的路徑。默認情況下,它將僅掃描主應用程序包及其子包以檢測 JPA 存儲庫。因此,如果 JPA 存儲庫位于主應用程序包或其子包下,那么它將被檢測到,作為@EnableAutoConfiguration自動配置基于 spring 的配置的一部分。如果存儲庫類未放置在主應用程序包或其子包下,則應在主應用程序配置類中使用注釋聲明相關存儲庫包@EnableJpaRepositories。然后,這將啟用給定/聲明的包中包含的 JPA 存儲庫。

用于啟用 JPA 存儲庫的注釋。默認情況下會掃描 Spring Data 存儲庫的帶注釋的配置類的包。

e.g. 
   @EnableJpaRepositories(basePackages = "com.springbootdev.examples.jpa.repositories")

此描述將幫助您更多地了解此注釋。


查看完整回答
反對 回復 2023-07-13
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

由于您使用的是 Spring Boot,因此不需要@Configuration使用@EnableJpaRepositories. Spring Boot 的自動配置可以完成這項工作。

您可以安全地刪除此注釋。

它將@EnableJpaRepositories告訴 Spring Boot 您想要控制 Spring Data JPA 存儲庫配置。

如果是這種情況,您需要指定要為您的存儲庫掃描的包:

@EnableJpaRepositories(basePackages = {"com.gretro.petclinic.vets.repositories"})


查看完整回答
反對 回復 2023-07-13
  • 3 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號