Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在类servlet中进行依赖项注入?_Java_Servlets - Fatal编程技术网

Java 如何在类servlet中进行依赖项注入?

Java 如何在类servlet中进行依赖项注入?,java,servlets,Java,Servlets,我有两个servlet,它们都使用相同的对象来处理数据库。但使用构造函数或setter作为对象的注入引用是不可能的。请帮助我,在我的情况下如何做到这一点: 第一个Servlet: public class AddUserServlet extends HttpServlet { private DBJointPool db; // Как передать этот объект в класс? @Override protected void doPost(Htt

我有两个servlet,它们都使用相同的对象来处理数据库。但使用构造函数或setter作为对象的注入引用是不可能的。请帮助我,在我的情况下如何做到这一点:

第一个Servlet:

public class AddUserServlet extends HttpServlet {

    private DBJointPool db; // Как передать этот объект в класс?

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        db.somethingToDoWithDatabaseConnectionPool();

    }
}
第二个Servlet:

public class DeleteUserServlet extends HttpServlet {

    private DBJointPool db; // Как передать этот объект в класс?

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        db.somethingToDoWithDatabaseConnectionPool();

    }
}

我使用没有框架的JDBC驱动程序

如果您的项目中包含
spring boot
,则以下是满足您需求的解决方案:

@Bean
public ServletRegistrationBean addUserServlet(DBJointPool db) {
    // suppose there is a constructor for your servlet
    final ServletRegistrationBean servlet = new ServletRegistrationBean(new AddUserServlet(db));
    servlet.setName("addUserServlet");
    servlet.setUrlMappings(Collections.singletonList("/addUser.*"));
    return servlet;
}
并公开
DeleteUserServlet
,如下所示:

@Bean
public ServletRegistrationBean deleteUserServlet(DBJointPool db) {
    // suppose there is a constructor for your servlet
    final ServletRegistrationBean servlet = new ServletRegistrationBean(new DeleteUserServlet(db));
    servlet.setName("deleteUserServlet");
    servlet.setUrlMappings(Collections.singletonList("/deleteUser.*"));
    return servlet;
}
当然,您必须在其他地方公开
DBJointPool
,例如:

@Bean
public DBJointPool dBJointPool() {
    return new DBJointPool();
}
然而,若您并没有使用
spring引导
,但
spring
框架是可以接受的,那个么在应用程序上下文xml文件中配置这些bean也可以

最后,如果<代码> Spring <代码>是不可接受的,请考虑单例,例如“代码>静态< /代码>成员。对于这些实例。


如果有任何问题,请告诉我。

假设您引用了这篇文章,这篇文章解释了您的问题的一个很好的解决方案。您不使用框架的具体原因是什么?@RajithPemabandu,但这仍然不是依赖注入。谢谢,我不使用Spring。对不起,我忘了把它写在我的问题里。春天是我java学习的下一章。不要删除你的答案,我认为这是一个很好的未来案例。然后这些bean的静态实例可以解决你的问题。