【问题标题】:Migrating to DAOs and Spring from Servlets and JDBC, advice?从 Servlet 和 JDBC 迁移到 DAO 和 Spring,建议?
【发布时间】:2011-08-09 01:19:44
【问题描述】:

我们有带有 servlet 的 webapps,可以直接调用 JDBC。我们大部分都用 Spring JDBC 替换了 JDBC 调用,这是一个巨大的改进(不再有泄漏的连接!)。

我想进一步处理这些乱七八糟的代码并使用 DAO。但是,我不确定如何使用混合中的 servlet 来执行此操作,因为我知道 servlet 不能是 @autowired。

例如,现在我有一个界面:

public interface AdminDao
{
  public boolean isAdmin(int id);
}

和一个实现

package myapp.dao.impl;

@Repository
public class AdminDaoSpring extends SimpleJdbcDaoSupport implements AdminDao
{
  private static final String _isAdminSql 
    = "SELECT count(*) from admin WHERE id=?";

  public boolean isAdmin(int id);
  {
    int cnt = getSimpleJdbcTemplate().queryForInt(_isAdminSql, id);
    return (cnt > 0);
  }
}

在我的 applicationContext.xml 中有

<bean id="adminDao" class="myapp.dao.impl.AdminDaoSpring"></bean>

我有一个 servlet,AdminCheckServlet,它当前可以进行上述查询。如何更改它以使用 adminDao 实例?我无法使用 @Service 注释 servlet,因为 DAO 不会被注入,因为 servlet 是由容器(Tomcat)而不是 Spring 构造的。

我是否应该创建另一个类 AdminService,并让它使用 AdminDao 处理所有调用?影响 Admin 表的 servlet 将全部实例化 AdminService 并使用它而不是直接 JDBC 调用。然而,这感觉不对。

谢谢!

保罗

【问题讨论】:

    标签: spring servlets jdbc dao


    【解决方案1】:

    我会研究 SpringMVC,并使用 Spring Controller 而不是直接使用 java servlet。

    Spring MVC

    它很容易使用。您创建一个简单的 web.xml 部署描述符,让您的端点调用 Springs DispatcherServlet。完成此操作后,您可以创建一个控制器类来将这些端点映射到控制器中的方法。您的控制器可以定义为 applicationContext 的一部分,因此可以注入其 DAO(或其他服务)。

    【讨论】:

    • 目前我们有很多servlet,所有的前端代码都会调用这些servlet。从那个到 Spring MVC 需要付出巨大的努力吗?或者您是说我将 servlet 的位置映射到控制器中的方法,然后由控制器处理 servlet 正在处理的任何事情?
    • 这很简单。您可以通过在 web.xml 中定义将所有请求映射到同一个 servlet(Spring 的 DispatcherServlet)来做到这一点,并且 servlet 会将所有请求定向到您定义的控制器。在控制器中,您可以指定哪个方法被指定的路径和 http 请求方法的注释调用。
    【解决方案2】:

    您需要使用 MVC 框架(最流行的是 Struts 1.x、St​​ruts 2 和 Spring MVC),并且您将能够从控制器中调用 daos(在 Struts 框架中称为“Actions”) .

    这是一个有价值的资源:@​​987654321@

    如果您没有太多可重用的业务逻辑,我不确定您是否需要服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 2021-03-07
      • 2016-02-19
      • 2018-01-07
      相关资源
      最近更新 更多