创建多个对象以实现Spring Boot最佳实践

时间:2019-07-13 18:32:39

标签: java spring-boot

我正在使用Spring Boot。请在我的情况下建议最佳实践。

我的参训班有参项:
姓名,地址,性别,公司工作,年龄,职业等。

我将从其他系统接收的这些参数作为personDTO对象,该对象将作为后期请求出现在正文中

所以我正在编写一个创建人的api。在这里我不能使用spring bean,因为它是单例的,一次可能有多个请求。(获取/发布下面的note3)

因此create api函数将在func下面调用。 请提出利用弹簧靴功能而不是使用新的Person来创建多个对象的最佳方法

注意-:1)我正在数据库中保存人员类。
注-:2)我在body参数中使用personDto对象,因为同一dto对象用于在项目中创建其他类,这将为其他类提供额外的参数。因此,不要专注于personDto类。
注3-:我不能使用单例,因为有人说有人在使用get api,因为它是单例,它将矛盾,它将返回错误的参数。因此使用了new。

void createPerson(personDto pDto)
{
   Person p = new Person();
   p.setName(pDto.getName());
   P.setAge(pDto.getAge());
   p.setSex(pDto.getSex());
   .
   "like this and opening transaction session to rollback if object is not 
   created"
}

1 个答案:

答案 0 :(得分:0)

很显然,Person不能是单例,因为您应根据每个请求创建这些对象。 现在,如果您绝对需要它,则可以在Spring中将Person创建为具有原型作用域的bean。

将PersonDTO转换为Person的服务将是单例,如注释中所述,但是其“转换”方法可以获取原型。

有很多技术方法可以将原型注入单例。看看Here

但是,我想强调的是,与单例不同,原型作用域的bean的实例不存储在应用程序上下文中。否则,应用程序上下文会爆炸,保留太多引用(我的意思是内存不足错误)

因此,您基本上可以获得以下内容:

  • 春天会做一个“新”不是你
  • 如果已定义,则可以调用Post构造函数(但对于pre-destroy方法则不是这样)
  • 如果您在此类中具有依赖项,spring将为您注入依赖项。像您这样的对象转换情况似乎并非如此。

那么在这一点上使用Spring有什么意义呢?

个人(这只是我的意见/建议)倾向于在S​​pring之外处理各种转化者,建造者等等,而在Spring保留服务/控制器(长寿对象)。