gpt4 book ai didi

java - 使用Spring Boot根据输入请求中的字段创建类链的不同实例

转载 作者:行者123 更新时间:2023-12-05 04:29:59 25 4
gpt4 key购买 nike

我的 Java 应用程序收到的每个请求都经过 4 层:

Handler --> Validator --> Processor --> DAO
  • 处理程序是 API 资源。 (处理程序.java)
  • Validator 验证输入。 ( validator .java)
  • 处理器执行一些业务逻辑。 (处理器.java)
  • DAO 是数据库通信层。 (DAO.java)

输入请求有一个名为request_type 的字段。基于此 request_type,我想为所有层类创建不同的对象,即:

request_type_A should pass through Handler1, Validator1, Processor1, DAO1 (instances)
request_type_B should pass through Handler2, Validator2, Processor2, DAO2 (instances)
request_type_C should pass through Handler3, Validator3, Processor3, DAO3 (instances).. and so on

澄清一下,要求是为给定的请求类型创建不同的对象链,以便具有不同 request_type 的两个请求具有完全不同的对象链实例。基本上我想根据给定的 request_type 对我的应用程序对象进行分片。

我正在使用 Spring Boot。 spring的ApplicationContext有没有办法为不同的对象类型提供不同的对象链。还是我应该自己管理这些实例?

有没有一种方法可以创建一个库,它会根据 request_type 使用 SpringApplicationContext 为每一层提供一个新的对象实例?

或者我应该创建多个 ApplicationContext 吗?

最佳答案

根据评论和问题,我了解到您将收到 2 或 3 个 request_type

所以我在这里使用的主要思想是使用链式对象的构造函数注入(inject)和不同的配置 bean,这些 bean 将根据您的请求类型使用。

请随时从 github 上查看这个简单的基于演示的代码,我在其中提出了我的想法:https://github.com/patilashish312/SpringObjectChaining

所以根据这段代码,我可以确认

  1. 此应用程序不会为每个请求创建对象链,但如果应用程序收到相同类型的请求,则会重复使用
  2. 分配给一种请求类型的对象未被其他请求类型使用。

下面的控制台输出是证明:

displaying request MyRequest(id=1, name=Ashish, requestType=requestTypeA)
Printing handler bean com.spr.boot3.ConditionalVerification.Handler.MyHandler@31182e0a
Printing validator bean com.spr.boot3.ConditionalVerification.Validator.MyValidator@484e3fe7
Printing processor bean com.spr.boot3.ConditionalVerification.Processor.MyProcessor@70f9b9c7
Printing dao bean com.spr.boot3.ConditionalVerification.Dao.MyDao@2a8175d9
inside dao, doing DAO processing
displaying request MyRequest(id=1, name=Ashish, requestType=requestTypeA)
Printing handler bean com.spr.boot3.ConditionalVerification.Handler.MyHandler@31182e0a
Printing validator bean com.spr.boot3.ConditionalVerification.Validator.MyValidator@484e3fe7
Printing processor bean com.spr.boot3.ConditionalVerification.Processor.MyProcessor@70f9b9c7
Printing dao bean com.spr.boot3.ConditionalVerification.Dao.MyDao@2a8175d9
inside dao, doing DAO processing
displaying request MyRequest(id=1, name=Ashish, requestType=requestTypeB)
Printing handler bean com.spr.boot3.ConditionalVerification.Handler.MyHandler@55ea9008
Printing validator bean com.spr.boot3.ConditionalVerification.Validator.MyValidator@5b2d74c5
Printing processor bean com.spr.boot3.ConditionalVerification.Processor.MyProcessor@5f12fb78
Printing dao bean com.spr.boot3.ConditionalVerification.Dao.MyDao@1a107efe
inside dao, doing DAO processing
displaying request MyRequest(id=1, name=Ashish, requestType=requestTypeB)
Printing handler bean com.spr.boot3.ConditionalVerification.Handler.MyHandler@55ea9008
Printing validator bean com.spr.boot3.ConditionalVerification.Validator.MyValidator@5b2d74c5
Printing processor bean com.spr.boot3.ConditionalVerification.Processor.MyProcessor@5f12fb78
Printing dao bean com.spr.boot3.ConditionalVerification.Dao.MyDao@1a107efe
inside dao, doing DAO processing

关于java - 使用Spring Boot根据输入请求中的字段创建类链的不同实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72205128/

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