我正在尝试编写一个 servlet 3.0 Web 应用程序,只是为了学习基本的 servlet 处理。通常我会使用弹簧。
现在我有一个 servlet 可以访问查询数据库的 DAO。现在,实例化该 DAO 并使用它的最佳方式是什么?我最好的猜测是在 servlet 中有一个私有属性,并在创建 servlet 时创建一个 DAO 实例。
但是,servlet 会被创建多次吗?
servlet 3.0 中是否有类似于 springs 依赖注入的东西?
我正在尝试编写一个 servlet 3.0 Web 应用程序,只是为了学习基本的 servlet 处理。通常我会使用弹簧。
现在我有一个 servlet 可以访问查询数据库的 DAO。现在,实例化该 DAO 并使用它的最佳方式是什么?我最好的猜测是在 servlet 中有一个私有属性,并在创建 servlet 时创建一个 DAO 实例。
但是,servlet 会被创建多次吗?
servlet 3.0 中是否有类似于 springs 依赖注入的东西?
javax.servlet API 是 java-ee 中包含的技术之一。
CDI,是java-ee中的上下文和依赖注入技术
因此,要回答您的问题,您的用例可以通过仅使用 CDI 和 Servlet 来解决。
但大多数支持上述的应用服务器(例如TomEE、Glassfish webprofiles)也将支持 EJB(使用 cdi)和 JPA。EJB+JPA 可用于实现 DAO。
Arjan Tijms对 java-ee-7 世界中包含和发生的内容进行了很好的链接概述
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。只要接口只有一个实现,就会不加任何仪式地注入。