gpt4 book ai didi

java - Spring Data 直接 Autowiring 存储库接口(interface)

转载 作者:行者123 更新时间:2023-11-30 08:06:56 25 4
gpt4 key购买 nike

我是 Spring Data 的新手,我想知道以这种方式直接 Autowiring 存储库是否正确(假设不需要更多方法),因为 Spring 4 可以解决通用 Autowiring :

@Autowired
CrudRepository<User,Long> repo;

有不止一个 b​​ean 实现了这个接口(interface)(SimpleJPARepository、QueryDslJpaRepository)所以 Spring 无法解决 Autowiring ,不是吗?

但是当你这样做的时候:

public interface MyRepo extends CrudRepository<User,Long> () {
}

用于实现的什么 bean Autowiring ?

谢谢。

最佳答案

我不知道你是否可以 Autowiring CrudRepository<User,Long> repo;直接,我想这可行。试试吧。

通常你声明你想要一个存储库 User通过定义类似

的接口(interface)
public interface MyRepo extends CrudRepository<User,Long> () {
}

然后您只需 Autowiring 它。 (我还建议您将其命名为 UserRespository,因为这就是它的工作)

@Autowired
MyRepo repo;

魔术是 Spring Data 然后为您实现接口(interface)。您可以 Autowiring 该实现,并且您的代码不会包含您使用的数据库的实现细节。

There is more than one bean that implements this interface (SimpleJPARepository, QueryDslJpaRepository) so Spring couldn't solve the autowiring isn't it?

它也必须在常规情况下这样做。某处有规则和配置将决定选择哪个实现,以防它有超过 1 个候选接口(interface)。

如果是SimpleJPARepository对比QueryDslJpaRepository它可能归结为您是否使用额外功能。后者的文档是

QueryDsl specific extension of SimpleJpaRepository which adds implementation for QueryDslPredicateExecutor.

如果您不想要继承 QueryDslPredicateExecutor 的类型它不需要基于该类的魔法实现。

关于java - Spring Data 直接 Autowiring 存储库接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33999879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com