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呼び出しの代わりにそのインスタンスを使用します。しかし、それは正しいとは思わない。
ありがとうございます!
ポール
現在、多くのサーブレットがあり、すべてのフロントエンドコードがこれらのサーブレットを呼び出しています。それをSpring MVCに移行するのに莫大な労力を要しますか?あるいは、サーブレットの位置をコントローラ内のメソッドにマップすると、サーブレットが処理していたものを処理します。 – Paul
これはかなり簡単です。 web.xmlですべてのリクエストを同じサーブレット(SpringのDispatcherServlet)にマッピングするように定義すれば、サーブレットは定義したコントローラにすべてのリクエストを送ります。コントローラからは、指定されたパスとhttp要求メソッドに対して、どのメソッドがアノテーションによって呼び出されるかを指定します。 –