JEEおよびSpringを使用しないJava Webアプリケーションの構築





この記事は、彼が望んでいることに突然気づいた人にとって興味深いものになります。

社会的に課せられたJEEとSpringなしで何かを作成してみてください。



Java Daredevil様、フレームワークの巨大なメカニズムの歯車になりたくありませんか?

設定や設定を書く際に「タイピスト」のように感じることにうんざりしていませんか?

統一された著者がそれを見る方法ではなく、あなたが望む方法で問題を解決したい

百万の図書館?



それからkatにようこそ。ここで、フレームワークのない世界の有益な発見を共有します。







コンテナがすべてです




あなたが思い出すように、JEEまたはSpring(以下、単にフレームワークと呼ぶ)は主に引き付けます

小さいコンポーネントとサービスが存在するコンテナの機会。

しかし、自分で作成することはできます。



簡単です。

作業に必要なすべてが利用できるコンテキストを作成します。

public class Context { public final DAO dao; public final MailService mails; public final AsyncService async; public App root; public Context( DAO dao, MailService mails, AsyncService async) { this.dao = dao; this.mails = mails; this.async = async; } }
      
      







すべてのサービスが存在するコンテナを作成します。

 public class App { public final SecurityService security; public final CommentService comments; public final UserService users; public App(Context c) { c.root = this; this.security = new SecurityService(c); this.users = new UserService(c); this.comments = new CommentService(c); } }
      
      







サービスには、ビジネスメソッドがあります。

コンテキストを通じて、必要なリソース(データベースや他のサービスなど)にアクセスできます。



例:

 class CommentService { DAO dao; MailService mails; UserService users; public CommentService(Context c){ dao = c.dao; mails = c.mails; users = c.root.users; } public Result getComments(Req req){ List comments = dao.getComments(req); User user = users.getCurUser(); mails.sendMail(); } }
      
      







Webアプリケーション全体に対してコンテナの1つのインスタンスを作成するだけです。

 public class SingleApp { private static App app; public static synchronized App get() { if(app != null) return app; //  DAO dao = new DAO(...); MailService mails = new MailService(...); AsyncService async = new AsyncService(...); Context c = new Context(dao, mails, async); //  app = new App(c); return app; } }
      
      







そして、あなたの仕事でコンテナからサービスを使用します:

 @WebServlet("/comments") public class GetCommentsServlet extends HttpServlet { CommentService comments; public void init() { App app = SingleApp.get(); comments = app.comments; } protected void doGet(HttpServletRequest req, HttpServletResponse resp) { List result = comments.getComments(...); req.setAttribute("comments", result); req.getRequestDispatcher("/WEB-INF/jsp/comments.jsp").forward(req, resp); } }
      
      







まとめ


2つまたは3つの最も単純なクラスを使用して、フレームワークなしで快適に作業できる条件を作成することができました。

5メガバイトのライブラリは必要ありませんでした。ソリューションはできるだけ早く開始します(

必要なもの)、単体テストで簡単に実行できます。

ただし、主なことは、アプリケーションの全サイクルを確認し、必要に応じて変更できることです。



このアプローチを例として使用して、 この小さなWebサービスを作成しました。 そして結果に満足しました。

JEEはなく、Springはありません。 しかし、私が必要とするすべてがあります。 :)



このトピックが読者を惹きつけたら、私は喜んでフレームワークの外の世界をあなたと知り合い続けます。



All Articles