重构 Java Servlet - 寻找一个好的命名方案
我正在重构一个现有的 (Ajax) Java Web 应用程序,该应用程序目前直接在 servlet 中保存许多逻辑。 (servlet 甚至使用一些令人讨厌的技巧互相调用......)
重构本身很痛苦,但非常简单(现在重构所有内容以使用依赖注入)。
我的问题是,我真的无法想出完美的命名方案:
重构的 Servlet 现在只包含最少量的逻辑(仅处理 ServletRequest 和 ServletResponse、发送 HTTP 错误代码等)。 ),然后他们将我当前所说的称为处理器(好/坏名字?!?),它可以被多个 Servlet、测试类重用……处理器执行以下操作所需的逻辑:动作,类似于如果我们使用 EJB,那么会话 Bean 就可以了。
我从来没有想过,“Session Bean”会是一个好名字。而且我也不太热衷于定义一个单一的“外观”。我主要是在寻找一个比“Processor”更好的名称,或者可能是关于如何构建 Servlet 处理代码的一些想法。
示例
这是一个简化的示例(真正的应用程序使用 GWT 和 Gilead,...但这并不那么重要):
public class UserRegistrationServlet extends HttpServlet {
@Inject
UserRegistrationProcessor userRegistrationProcessor;
@Override
protected void doPost(final HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException {
RegistrationRequest registrationRequest = parseRegistrationRequest(req);
RegistrationResult registrationResult =
userRegistrationProcessor.process(registrationRequest);
pw.print(toJson(registrationResult));
...
}
}
正如示例所示,我更喜欢拥有专门的处理器,它们仅负责一项任务(或者可能是一些非常重要的任务) :强相关的任务) - 与处理许多不同操作的大类相反。
I'm refactoring an existing (Ajax) Java Web application, which currently holds lots of its logic directly in the servlets. (The servlets even call each other, using a few nasty tricks ...)
The refactoring itself is painful, but pretty much straightforward (refactoring everything to use Dependency Injection now).
My problem is, that I really can't come up with the perfect naming scheme:
The refactored Servlets are now holding just a minimum amount of logic (just so much that they process the ServletRequest and ServletResponse, send an HTTP error code, etc.), then they call what I currently refer to as Processors (good/bad name?!?), which can be reused by several Servlets, Test classes, ... The processors perform the logic required for the action, similar to what a Session Bean would do if we were using EJBs.
I never thought, that "Session Bean" would be a good name anyway. And I'm also not very keen on defining a monolithic "Facade". I'm looking primarily for a better name than "Processor", or maybe some ideas how you structure your Servlet processing code.
Example
This is a simplified example (the real application uses GWT with Gilead, ... but that's not so important):
public class UserRegistrationServlet extends HttpServlet {
@Inject
UserRegistrationProcessor userRegistrationProcessor;
@Override
protected void doPost(final HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException {
RegistrationRequest registrationRequest = parseRegistrationRequest(req);
RegistrationResult registrationResult =
userRegistrationProcessor.process(registrationRequest);
pw.print(toJson(registrationResult));
...
}
}
As the example suggests, I prefer to have specialized processors, which are responsible for one task only (or maybe a few very strongly related tasks) - opposed to a big class that handles lots of different actions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是我基于之前讨论的示例:
希望这会有所帮助。
Here is my example based on previous discussion:
Hope this helps.
为什么不按原样称呼它们:
Servlet
?如:
Why not call them what they are:
Servlet
s?As in: