Java 在ServiceLayer中获取ServletContext

Java 在ServiceLayer中获取ServletContext,java,servlets,jakarta-ee,Java,Servlets,Jakarta Ee,在服务层获取servlet上下文的最佳实践是什么?有许多选项,但都是错误的: 将其放入ThreadLocal(即每个请求)中,并通过ThreadLocalServletContextHolder.get()获取它 将其作为参数传递给服务方法 它们是错误的,因为服务层不应该知道是servlet向其提供数据。明天可能是秋千 因此,正确的方法是在servlet(或控制器)中收集所有必需的参数,并将它们作为参数传递给服务层。一个更糟糕的选择,但仍然没有那么糟糕,就是获取属性的映射,然后将其传递。有许

在服务层获取servlet上下文的最佳实践是什么?

有许多选项,但都是错误的:

  • 将其放入
    ThreadLocal
    (即每个请求)中,并通过
    ThreadLocalServletContextHolder.get()获取它

  • 将其作为参数传递给服务方法

它们是错误的,因为服务层不应该知道是servlet向其提供数据。明天可能是秋千


因此,正确的方法是在servlet(或控制器)中收集所有必需的参数,并将它们作为参数传递给服务层。一个更糟糕的选择,但仍然没有那么糟糕,就是获取属性的
映射,然后将其传递。

有许多选项,它们都是错误的:

  • 将其放入
    ThreadLocal
    (即每个请求)中,并通过
    ThreadLocalServletContextHolder.get()获取它

  • 将其作为参数传递给服务方法

它们是错误的,因为服务层不应该知道是servlet向其提供数据。明天可能是秋千


因此,正确的方法是在servlet(或控制器)中收集所有必需的参数,并将它们作为参数传递给服务层。一个更糟糕的选择,但仍然没有那么糟糕,就是获取属性的
Map
,然后传递它。

最佳实践是“不要这样做”-服务层应该不知道客户端应用程序的实现细节和协议。无论您需要从ServletContext获得什么,您需要事先提取它并将其准确地传递给服务层。谢谢,我将以argumnet的形式传递我所需的对象。最佳做法是“不要这样做”-服务层应该不知道客户端应用程序的实现细节和协议。无论您需要从ServletContext获得什么,您需要事先提取它并将其准确地传递给服务层。谢谢,我将以argumnet的形式传递我所需的对象