在 HttpServlet 中声明自己的方法是线程安全的吗?

Is it thread safe to declare own methods in a HttpServlet?

我有一个 servlet,它获取数据然后保存它。这是一个粗略的片段:

@WebServlet("/ListenerServlet")
public class ListenerServlet extends HttpServlet {

    @Inject
    private PersistService service;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    String toPersist = getDataFromRequest();
    service.persist(toPersist);
}

我的问题

自己的方法:

private void doPersist(String toPersist) {
    service.persist(toPersist);
}

拥有自己的方法绝对没问题 - 只要它们也是线程安全的。注入 PersistService 是将后备存储放入 servlet 的好方法,但 PersistService 也是线程安全的仍然很重要。例如,如果您在 class 中有一个静态 EntityManager,那么它是 而不是 线程安全的,无需一些额外的同步。但是,如果您以线程安全的方式进行持久化,那么您应该没问题。

总的来说,您使用的模式是我用过很多次并且效果很好的模式。

你可以参考这些问题:

Regarding thread safety of servlet

Why Servlets are not thread Safe?

If my Servlet instance variable is of type StringBuffer, is it thread-safe?