Java servlet 3.0 web应用中的依赖注入?

Java servlet 3.0 web应用中的依赖注入?,java,servlets,servlet-3.0,Java,Servlets,Servlet 3.0,我试图编写一个Servlet3.0Web应用程序,只是为了学习基本的servlet处理。通常我会用弹簧 现在我有了一个servlet,它可以访问一个DAO来查询数据库。现在,实例化并使用DAO的最佳方法是什么?我最好的猜测是在servlet中有一个私有属性,并在创建servlet时创建DAO的实例 但是,servlet会被创建多次吗 servlet 3.0中是否有类似于springs依赖项注入的功能?EJB3依赖项注入使用极其简单。单个注释@EJB导致注入声明的bean。将SomeDAO bea

我试图编写一个Servlet3.0Web应用程序,只是为了学习基本的servlet处理。通常我会用弹簧

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

但是,servlet会被创建多次吗


servlet 3.0中是否有类似于springs依赖项注入的功能?

EJB3依赖项注入使用极其简单。单个注释@EJB导致注入声明的bean。将SomeDAO bean注入Servlet 3.0的过程如下所示:

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

注入的somedaobean可以是接口或无接口视图bean。只要接口只有一个实现,它就可以毫无仪式地被注入。

ejb3依赖项注入使用起来非常简单。单个注释@EJB导致注入声明的bean。将SomeDAO bean注入Servlet 3.0的过程如下所示:

@WebServlet(name="Messenger", urlPatterns={"/Messenger"})
public class Messenger extends HttpServlet {    
    @EJB
    SomeDAO someDAO;
 }
注入的somedaobean可以是接口或无接口视图bean。只要该接口只有一个实现,它就可以毫无仪式地注入。

API是javaee中包含的技术之一

,是JavaEE中的上下文和依赖项注入技术

所以为了回答您的问题,您的用例可以通过只使用CDI和servlet来解决

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

Arjan Tijms提供了一个很好的链接,概述了什么是java ee中包含的技术之一

,是JavaEE中的上下文和依赖项注入技术

所以为了回答您的问题,您的用例可以通过只使用CDI和servlet来解决

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


Arjan Tijms提供了一个很好的链接概述,说明了什么是

另外,如果我有多个servlet都需要访问dao,这意味着我要多次创建dao。这似乎不对!当然,我可以在servlet和dao之间有一个服务类,但这需要是一个单例?您不能只使用Spring创建bean,而不使用Spring的其他特性,例如URL映射等,然后从servlet代码中调用getBean来获取所需的bean吗?或者,如果让它管理servlet的创建/销毁生命周期,您可以将其用于依赖项注入,但我猜您不希望这样。或者,您是否试图构建代码,就好像您根本不被允许使用Spring一样?为了更好地理解底层功能,我尝试根本不使用Spring,这是正确的:另外,如果我有多个servlet,它们都需要访问dao,这意味着我要多次创建dao。这似乎不对!当然,我可以在servlet和dao之间有一个服务类,但这需要是一个单例?您不能只使用Spring创建bean,而不使用Spring的其他特性,例如URL映射等,然后从servlet代码中调用getBean来获取所需的bean吗?或者,如果让它管理servlet的创建/销毁生命周期,您可以将其用于依赖项注入,但我猜您不希望这样。或者,您是否试图构建代码,就好像您根本不被允许使用Spring一样?为了更好地理解底层功能,我尝试根本不使用Spring,这是正确的:获取@EJB注释需要哪个依赖项?到目前为止,我只有javax.servlet-api-3.0.1.jar。获取@EJB注释需要哪个依赖项?到目前为止,我只有javax.servlet-api-3.0.1.jar。