2

我正在尝试编写一个 servlet 3.0 Web 应用程序,只是为了学习基本的 servlet 处理。通常我会使用弹簧。

现在我有一个 servlet 可以访问查询数据库的 DAO。现在,实例化该 DAO 并使用它的最佳方式是什么?我最好的猜测是在 servlet 中有一个私有属性,并在创建 servlet 时创建一个 DAO 实例。

但是,servlet 会被创建多次吗?

servlet 3.0 中是否有类似于 springs 依赖注入的东西?

4

2 回答 2

2

javax.servlet API 是 java-ee 中包含的技术之一。

CDI,是java-ee中的上下文和依赖注入技术

因此,要回答您的问题,您的用例可以通过仅使用 CDI 和 Servlet 来解决。

但大多数支持上述的应用服务器(例如TomEEGlassfish webprofiles)也将支持 EJB(使用 cdi)和 JPA。EJB+JPA 可用于实现 DAO。

Arjan Tijms对 java-ee-7 世界中包含和发生的内容进行了很好的链接概述

于 2013-07-31T20:33:11.863 回答
2

EJB 3 依赖注入使用起来非常简单。单个注解@EJB 会导致注入已声明的bean。将 SomeDAO bean 注入 Servlet 3.0 如下所示:

@WebServlet(name="Messenger", urlPatterns={"/Messenger"})
public class Messenger extends HttpServlet {    
    @EJB
    SomeDAO someDAO;
 }

注入的 SomeDAO bean 可以是接口或无接口视图 bean。只要接口只有一个实现,就会不加任何仪式地注入。

于 2013-07-31T17:28:01.930 回答