Spring - 在单例中注入原型bean

时间:2016-07-14 18:13:39

标签: java spring spring-boot

我正在使用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的信息?

0 个答案:

没有答案