繁体   English   中英

如何在 Spring 引导中使用限定符

[英]How do I use Qualifiers in Spring boot

这是我的项目结构

MODEL

  1. TodoItem.java - 这是一个接口
  2. TodoType1 - 这实现了接口
  3. TodoType2 - 这实现了接口

回购

  1. TodoRepo.java - 使用 <TodoItem, Integer> 扩展 JPA repo

Controller(使用 TodoRepo 进行 CRUD 操作)

  1. 请求 1 - 需要使用 todotype1
  2. 请求 2 - 需要使用 todotype2

我有点困惑,我应该如何 go 在这里使用限定符? 我应该为每种类型创建不同的存储库吗?

TodoRepo.java - 使用 <TodoItem, Integer> 扩展 JPA repo

这里 TodoItem 是一个接口。 Springboot JPA 对它要处理哪个实体感到困惑(两个 class 实现了 TodItem 接口)。 声明指定的实体 class 而不是接口不会引发错误。

我认为您需要创建两个不同的存储库。 然后您可以使用@Autowired 注释将所需的 bean 注入您的 controller。

这将根据 @Qualifier 注释的值将适当的存储库实现(TodoType1Repo 或 TodoType2Repo)注入到您的 controller 中。

更多关于@Qualifier https://www.baeldung.com/spring-qualifier-annotation

@Qualifier("todoType1Repo")
@Repository
public class TodoType1Repo extends JpaRepository<TodoType1, Integer> {}

@Qualifier("todoType2Repo")
@Repository
public class TodoType2Repo extends JpaRepository<TodoType2, Integer> {}

  
@Autowired
@Qualifier("todoType1Repo")
private TodoRepo todoType1Repo;

@Autowired
@Qualifier("todoType2Repo")
private TodoRepo todoType2Repo;

public void handleRequest1() {
  // Use todoType1Repo to perform CRUD operations on TodoType1 objects
}

public void handleRequest2() {
  // Use todoType2Repo to perform CRUD operations on TodoType2 objects
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM