2011-04-19 12 views
0

JDBC呼び出しを直接行うサーブレットを持つWebアプリケーションがあります。 JDBC呼び出しをSpring JDBCに置き換えました。Spring JDBCは膨大な改善をもたらしました。サーブレットとJDBCからのDAOとSpringへの移行、アドバイス?

私はコードのこの混乱と少し離れてDAOを使用したいと思います。しかし、私はサーブレットを@autowiredできないことを知っているので、この組み合わせでサーブレットをどのように行うのかは分かりません。私のapplicationContext.xmlをで

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); 
    } 
} 

私は

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

を持って、私は」:今私はインターフェイスを持っている例として

、 AdminCheckServletというサーブレットがあります。このサーブレットは現在、上記のクエリを作成しています。 adminDaoインスタンスを使用するには、これをどのように変更しますか?サーブレットはSpringではなくコンテナ(Tomcat)によって構築されるため、DAOは注入されないため、サーブレットに@Serviceを付けることはできません。

AdminServiceという別のクラスを作成し、AdminDaoを使用してすべての呼び出しを処理する必要がありますか? Adminテーブルに影響するサーブレットは、すべてAdminServiceをインスタンス化し、直接JDBC呼び出しの代わりにそのインスタンスを使用します。しかし、それは正しいとは思わない。

ありがとうございます!

ポール

答えて

1

私はSpringMVCに見て、その代わりにdirectrly Javaサーブレットを使用しての春のコントローラーを使用します。

Spring MVC

使用方法はとても簡単です。エンドポイントがSpring DispatcherServletを呼び出すために、単純なweb.xmlデプロイメント記述子を作成します。これを行うと、コントローラークラスを作成して、これらのエンドポイントをコントローラー内のメソッドにマップできます。あなたのコントローラはあなたのapplicationContextの一部として定義することができ、そのためDAO(または他のサービス)を注入することができます。

+0

現在、多くのサーブレットがあり、すべてのフロントエンドコードがこれらのサーブレットを呼び出しています。それをSpring MVCに移行するのに莫大な労​​力を要しますか?あるいは、サーブレットの位置をコントローラ内のメソッドにマップすると、サーブレットが処理していたものを処理します。 – Paul

+0

これはかなり簡単です。 web.xmlですべてのリクエストを同じサーブレット(SpringのDispatcherServlet)にマッピングするように定義すれば、サーブレットは定義したコントローラにすべてのリクエストを送ります。コントローラからは、指定されたパスとhttp要求メソッドに対して、どのメソッドがアノテーションによって呼び出されるかを指定します。 –

0

MVCフレームワーク(Struts 1.x、St​​ruts 2、Spring MVCが最も一般的です)を使用する必要があります。コントローラからStoutsフレームワークの「アクション」と呼ばれるダオスを呼び出すことができます。 )。ここで

は、このことについての貴重な資源である:http://www.ibm.com/developerworks/java/library/j-sr2/index.html

あなたは多くの再利用可能なビジネスロジックを持っていない場合、私は、あなたがサービスを必要とわかりません。

関連する問題