【发布时间】:2019-11-23 02:22:36
【问题描述】:
我正在使用 spring boot。请在我的场景中提出最佳实践。
我有带参数的人员类-:
姓名、地址、性别、公司工作、年龄、职业等。。
这些参数我将从另一个系统作为 personDTO 对象接收,该对象将作为 post 请求进入正文
所以我正在编写一个创建人 api。这里我不能使用 spring bean,因为它是单例的,并且一次可以有多个请求。(get/post 参考下面的注释3)
所以 create api 函数将在 func 下面调用。 请建议通过利用 Spring Boot 功能而不是使用 new Person 来创建多个对象的最佳方法
注意-:1)我在数据库中保存人员类。
注意-:2)我在 body 参数中使用 personDto 对象,因为相同的 dto 对象用于在项目中创建其他类,这些类将为其他类提供额外的参数。所以不要专注于 personDto 类。
注意3-:我不能使用单例,因为可以说有人正在使用get api,然后因为它是单例的,所以它会与它返回错误的参数相矛盾。因此使用新的。
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"
}
【问题讨论】:
-
我不能使用 spring bean,因为它是单例的,一次可以有多个请求。:这是你错的地方。单例完全能够同时处理多个请求。它需要是线程安全的,仅此而已。但控制器通常是无状态的,因此是线程安全的。
-
我不能使用单例,因为可以说有人正在使用 get api,然后因为它是单例的,所以它会矛盾,它会返回错误的参数。因此使用了新的。
-
我没有完全理解你的问题。你究竟需要得到什么答案?是否有更好的方法来创建“数据对象”(
Person)而不是使用new Person(...)? -
是的,通过利用 spring boot 功能而不是使用 new Person 创建多个对象的最佳方法
-
我不能使用单例,因为可以说有人正在使用 get api,然后因为它是单例的,所以它会矛盾,它会返回错误的参数:不,它不会。每个线程都有自己的堆栈,一个线程中一个方法执行所使用的局部变量不会与另一个线程中相同方法执行所使用的其他局部变量相同。而且每个线程都需要创建一个新人,所以使用
new Person()是正确的,正确的做法。
标签: java spring-boot