gpt4 book ai didi

Java Spring MongoDB 存储库接口(interface)

转载 作者:行者123 更新时间:2023-12-02 08:46:53 25 4
gpt4 key购买 nike

所以我有一个 AppUser 类:

    @Data
@Builder
@Document(collection = "app_users")
@Component
@AllArgsConstructor
@NoArgsConstructor
@Import(AppConfig.class)
public class AppUser {

@Id
@NotBlank(message = ErrorConstants.ANDROID_USER_ACCOUNT_MANAGER_ID_IS_NULL)
private String androidUserAccountManagerId;

@NotBlank(message = ErrorConstants.NULL_NAME)
private String name;

private Friend bestFriend;

@Setter(AccessLevel.NONE)
private FriendList friendList;

private boolean manualBestFriendOverride;

public Optional<Friend> getFriend(String friendName) {
return friendList.getFriend(friendName);
}

public void calculateBestFriend() {
if (!manualBestFriendOverride) {
bestFriend = friendList.calculateAndReturnBestFriend();
}
}
}

我创建了一个扩展 MongoRepositoryAppUserRepository 接口(interface):

    @Repository
public interface AppUserRepository extends MongoRepository<AppUser, String> {}

我有一个与界面交互的 WebController 类。此类中的 AppUserRepository 字段是 @Autowired。这一切似乎都有效,但我有一些关于如何以及如何继续为此编写集成测试的问题:

  1. 如何配置这个已创建的 AppUserRepository?我可以在特定端口等上运行它吗?
  2. 为什么 Autowiring 起作用了,因为我没有在AppConfig中创建这个AppUserRepository Bean,就像我有其他 Bean一样在我的应用程序中自动连接
  3. 如果我要创建一个 Bean,我是否还必须实现该类并返回实例化?我开始这样做,但我必须实现所有 MongoRepository 类方法,我不确定这些方法是否正确。
  4. 如何使用 AppUserRepository 编写集成测试?我需要一个 AppUserRepository 来与我的请求进行交互,但我不希望在服务启动并运行时它与实时应用程序数据库是同一个数据库。我可以 @Autowire 将数据库添加到集成测试类中,然后在集成测试运行后关闭数据库吗?如果这就是我前进的方向,我想我需要做上面的第 3 点。

感谢您提前提供的帮助,我已尝试阅读一些文档,但我认为我缺少一些关键知识,这意味着这一切都相当令人难以承受和困惑。

谢谢!

最佳答案

这实际上是一个很大的故事。本主题称为 Spring Data JPA、Hibernate。您可能想对此进行研究,并观看一些教程等。

简单来说,MongoRepository 只是为您提供了很多可以使用的方法。您还可以定义自己的方法、添加查询等。

您的起点:https://www.baeldung.com/spring-boot-hibernate

https://www.baeldung.com/the-persistence-layer-with-spring-data-jpa

https://www.baeldung.com/spring-data-jpa-query

当然,您可以通过 application.properties 文件设置端口号(以及一些其他属性)。这是最常见属性的列表,您可以在上面找到 mongodb 的属性: https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html

现在谈谈 bean 。实际上,您基本上使用 @Repository 注释创建了一个。因此 Spring Context 在应用程序启动时加载它。您可以 Autowiring 它。

关于Java Spring MongoDB 存储库接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61014296/

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