gpt4 book ai didi

java - Spring Data - 如何在存储库片段中重用存储库?

转载 作者:行者123 更新时间:2023-12-04 16:29:34 25 4
gpt4 key购买 nike

更新:以下是使用Spring Boot 2.1.0

我有一个 Spring Data 存储库,我正在尝试为它提供一些自定义功能,遵循 fragments example from the documentation .

所以我在存储库中添加了一个额外的接口(interface):

public interface UserRepository extends JpaRepository<User, Long>, UserExtraLogic {
User findByFirstNameAndLastName(String firstName, String lastName);
}

使用此自定义界面:

interface UserExtraLogic {
void ensureHasAccess();
}

及其实现:

class UserExtraLogicImpl implements UserExtraLogic {
public void ensureHasAccess() {
}
}

问题是我希望能够在 UserExtraLogicImpl 中使用我的存储库,这样我就可以重用像 findByFirstNameAndLastName 这样的查询方法,而不必自己编写它们使用 EntityManager。所以我尝试了这个:

class UserExrtaLogicImpl implements UserExtraLogic {
@Autowired
private UserRepository userRepository;
}

但是应用程序没有启动。我得到一个 NullPointerException,但我认为这只是 Spring 进入一个试图解决这些依赖关系的循环。

我正在尝试做的事情可能吗?有没有其他方法可以做到这一点?

最佳答案

您可以使用 ObjectFactory<T> 延迟加载您的存储库( Spring 概念)或 Provider<T> (标准 Java API)。

class UserExrtaLogicImpl implements UserExtraLogic {
@Autowired
private ObjectFactory<UserRepository> userRepository;

public void soSomething() {
userRepository().getObject().findById(xxx);
}
}

关于java - Spring Data - 如何在存储库片段中重用存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53322230/

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