我正在使用spring boot开发一个微服务。我正在使用HTTP方法GET公开api“customer”。作为服务层的一部分,我正在创建一个客户对象,并使用外部调用的详细信息填充客户对象。在响应中返回此客户对象。
我的服务层如下所示:
@Service
Class CustomerServiceImpl{
public Customer getCustomer(){
Customer customer = new Customer();
// populate customer object
return customer;
}
}
我正在探索是否可以注入bean,而不是使用new关键字来创建客户。我相信我需要创建客户对象作为单身,因为每个请求可能需要一个单独的实例。因此,我在java配置类中定义了类似于下面的客户对象。
@Bean
@Scope("prototype")
public Customer getCustomer(){
return new Customer();
}
我以这种方式注入bean -
@Service
Class CustomerServiceImpl{
@Autowired
Customer customer;
public Customer getCustomer(){
// populate customer object
return customer;
}
}
但是在这种情况下,我看到返回的客户对象相同,因为CustomerServiceImpl是一个单例。能否帮助解决以下问题 -
1)有没有办法通过将CustomerServiceImpl保持为单例来为CustomerServiceImpl内的每个请求创建一个新的客户对象? 2)如果我继续使用当前的方法,是否有可能因为我总是有一个客户对象实例而导致反应混乱?例如:客户A和B正在并行获取,A先启动,B先启动,但在A之前完成。在这种情况下请求A接收客户B的信息?