gpt4 book ai didi

java - 使用 Spring 服务的构建器类

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

我想在 Spring 项目中创建一个构建器类(即实现构建器设计模式的类)。问题是我需要构建器来使用一些 Spring 服务。我显然不希望用户在构造函数中显式提供服务,但是当我尝试 @Autowire 服务时,我得到 Autowired 成员必须在有效的 Spring bean 中定义.我可以使用 @Component 注释我的构建器,但这会使其成为单例,这对于构建器来说是不理想的。如何将服务注入(inject)到我的构建器类而不使其成为单例?

使用 this article 中的示例,假设我有以下构建器:

BankAccount account = new BankAccount.Builder(1234L)
.withOwner(25324)
.atBranch("Springfield")
.openingBalance(100)
.atRate(2.5)
.build();

我希望 withOwner 使用我的 UserService 从数据库中获取实际用户(给定作为参数接收的 ID 号)。我该如何将 UserService 注入(inject)到构建器中?

最佳答案

有两种方法可以做到这一点:

1)将服务放入withOwner()方法

new BankAccount.Builder(1234L)
.withOwner(25324, userService)

2)将UserService添加到Builder并创建一个Builder工厂:

@Component
class BuilderFactory {
@Autowire
private UserService user service
BankAccount.Builder newBuilder(Long id) {
return BankAccount.Builder(service, id);
}
}

Usage:
builderFactory.newBuilder(1234L)
.withOwner(25324)

关于java - 使用 Spring 服务的构建器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57670895/

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