2010年3月5日金曜日

フレームワーク奮闘記 その6 ちょっと寄り道してAOP

Springを導入しようと思っていて、Webページやら何やらを色々と読んでいると
どうやら、Springに対して大いなる誤解をしてるらしいことが判明。
完全に調べきってないけど、下記の懸念点をSpringで解決しようかなぁと思ってみている。
  • ログ


  • バッチ


  • メール


  • Ajax用のレスポンスServlet


  • でまあ、当初の目的はConnectionの隠蔽とトランザクション処理の追い出し
    だったんですが。
    今回はちゃんと勉強します!
    いつもいつも忙しさにかまけて(それを言い訳に。。。)
    表面的な理解で終わってしまう僕ですが、
    今回ばかりは皆の仕事の土壌(Soil)を正に作っているわけだから、
    きちんとした理解をするべきだ!という結論に至りました(当たり前だ!)。
    というわけなので、今回は大分寄り道をしてAOPの勉強です。

    2010年3月2日火曜日

    フレームワーク奮闘記 その5 何となく出来てきた。

    どうも、完全に一ヶ月間放置してました。。。
    ところで、まあ良い感じで仕上がってきたので、経過報告がてら現状の問題点とかを。。。

    管理方法は以下の様にする。
    Service
         |__ MainMenu
         |__ SubMenu
         |__ Contents
                |__ Page
    
    それぞれのコンテンツに対してライフサイクルを設ける。
    GlobalSession管理<アプリケーションスコープでのSESSION>
          |__ MainMenu
          |__ User情報とか
          |__ セキュリティ情報とか
    ServiceSession管理 
         |__Service
          |__SubMenu
          |__Contents
                |__ Page
    
    実際にちょこまか使うのはContents配下のPageたちなので、ContentsとPageはまた別個に持つ。
    これって良く考えると、ServiceSessionいらないんじゃないかと思うんだけど、まあいいや。
    イメージ的に下の様な感じ
       request.getSession().setAttribute("SoilServiceSession",new HashMap);
       //このHashMapのObjectに更に色々詰めていく。
      Map sessMap = (Map) request.getSession().getAttribute("SoilServiceSession");
       sessMap.put("SoilContents",new Contents());
       sessMap.put(contetns.getClass().getName(), new HashMap);
      //キーを常に管理しておいて、必要なくなればnullを突っ込んで参照を切ってしまう。
       //contetnsは飽くまで管理上の区分けなので、表側には殆ど出てこない。。。
    
    てな感じで管理しようかなぁと漠然と思っている。何か良い方法無いのかなぁとも思いつつ。
    後、この形にしたことで少しずつAnnotationの有用性も出てきた。
    まだまだ、世にあるフレームワークには程遠いけど。。。
        @Control(next = Next.class,
                 back = Back.class)
        public abstract class Page{
    
            public void process(){
                   
            }
        }
    
    上記の様な感じ。抽象クラスなので実際に呼び出されるところでAnnotation使って、
    自身の管理する次のクラスと前のクラスが分かるようにしてみた。
    描画部分はVelocityで、そんでもってAction系の所は意外と普通にReflectionで作ってしまったので、
    ほとんどエセRuby on Railsな感じになってきている。
    ある程度、まとまったらもう少し奥歯に物挟まっていないような感じで書いてみたいもんだ。
    本気で良い感じなってきたら公開してしまうのもありかなぁと。。。
    もともと、オープンソースな土壌で生まれ育ったから、そこら辺は死守したいですな。
    とまあ、良く分からない感じですけど、駄文におき付き合い頂きどうもでした。