Java 在ServiceLayer中获取ServletContext
在服务层获取servlet上下文的最佳实践是什么?有许多选项,但都是错误的:Java 在ServiceLayer中获取ServletContext,java,servlets,jakarta-ee,Java,Servlets,Jakarta Ee,在服务层获取servlet上下文的最佳实践是什么?有许多选项,但都是错误的: 将其放入ThreadLocal(即每个请求)中,并通过ThreadLocalServletContextHolder.get()获取它 将其作为参数传递给服务方法 它们是错误的,因为服务层不应该知道是servlet向其提供数据。明天可能是秋千 因此,正确的方法是在servlet(或控制器)中收集所有必需的参数,并将它们作为参数传递给服务层。一个更糟糕的选择,但仍然没有那么糟糕,就是获取属性的映射,然后将其传递。有许
- 将其放入
(即每个请求)中,并通过ThreadLocal
ThreadLocalServletContextHolder.get()获取它
- 将其作为参数传递给服务方法
因此,正确的方法是在servlet(或控制器)中收集所有必需的参数,并将它们作为参数传递给服务层。一个更糟糕的选择,但仍然没有那么糟糕,就是获取属性的
映射,然后将其传递。有许多选项,它们都是错误的:
- 将其放入
ThreadLocal
(即每个请求)中,并通过ThreadLocalServletContextHolder.get()获取它
- 将其作为参数传递给服务方法
它们是错误的,因为服务层不应该知道是servlet向其提供数据。明天可能是秋千
因此,正确的方法是在servlet(或控制器)中收集所有必需的参数,并将它们作为参数传递给服务层。一个更糟糕的选择,但仍然没有那么糟糕,就是获取属性的Map
,然后传递它。最佳实践是“不要这样做”-服务层应该不知道客户端应用程序的实现细节和协议。无论您需要从ServletContext获得什么,您需要事先提取它并将其准确地传递给服务层。谢谢,我将以argumnet的形式传递我所需的对象。最佳做法是“不要这样做”-服务层应该不知道客户端应用程序的实现细节和协议。无论您需要从ServletContext获得什么,您需要事先提取它并将其准确地传递给服务层。谢谢,我将以argumnet的形式传递我所需的对象