JAvaメタデータアプリケーション、コントローラのメタデータ記述を自動的に取得
/**
*
* @param packageName
* @return
*/
public static ArrayList<Class> getControllerListFromPackage(String packageName){
ArrayList<Class> controllers = new ArrayList<Class>() ;
Object prolbemObj = null;
try {
Class[] classes = ReflectUtil.getClassesFromPackage(packageName);
for(Class cls : classes){
prolbemObj = cls ;
if (SysUtil.isController(cls)){
controllers.add( cls );
}
}
}
catch(Exception e){
System.out.println(" : " + prolbemObj);
}
finally{
return controllers;
}
}
// -------------------------------------------------------
public static String getAnnoDescription(Anno_Controller anno_ctl){
if (anno_ctl != null)
return anno_ctl.description() ;
return null ;
}
/**
* , ,
* @param ctl
* @return
*/
public static String getControllerAnnoDescription(Class ctl){
Anno_Controller anno_ctl = ((Anno_Controller)
ctl.getAnnotation(Anno_Controller.class)) ;
String description = getAnnoDescription(anno_ctl);
if (description != null)
return description ;
//
/**
* java ,
* :
* :
*
* ,
*/
Class superClass = ctl.getSuperclass();//
if ( isController(superClass)){
return getControllerAnnoDescription(superClass);
}
else {
//
return getControllerAnnoDescription(Controller.class);
}
}
と書く
実行結果
コントローラが見つかりました
class com.sinomagazine.fuseblog.controller.D
説明:クラス:Default、デフォルトコントローラ
[actionIndex::d.do]
[actionIndex::投稿イベントの削除]
---------------------------------
class com.sinomagazine.fuseblog.controller.Default
説明:クラス:Default、デフォルトコントローラ
[actionIndex::index.do]
[actionIndex::デフォルトイベント]
---------------------------------
作成の目的:
コントローラのプロファイルを構成したくなくて、CRUD操作のグループごとに少なくとも4つのActionクラスを占有する問題を解決して、コントローラファイルを構成したくなくて、
命名規則を使用して、作成されたXMLの煩雑さを低減します...
ある友人によると、StrutsのDispatcherActionを使用すると、パラメータを入力することで各actionが1つのクラスになる問題を解決することができるという.
しかし、これはこれまでの开発方式よりも复雑で、配置が难しいようで...いや...
PHPのような、不要、または少量の構成しか必要としない開発モデルを実現したい.ここではコントローラを構成するこの自動化を実現したいだけだ.0構成
構想はすでに大体理解して、次第に実現している過程の中で..
package com.sinomagazine.fleajava;
import com.sinomagazine.fleajava.core.Interrupt;
/**
*
*
* @author
* [email protected]
* 2009-7-3
*/
public class Runner {
/**
*
*/
public static void main(String[] args) throws Exception {
Interrupt interrupt = new Interrupt() ;
interrupt.setControllerPackage("com.sinomagazine.fuseblog.controller");
interrupt._do("Default", "index");
}
}
package com.sinomagazine.fuseblog.controller;
import com.sinomagazine.fleajava.controller.Controller;
import com.sinomagazine.fleajava.core.annotation.Anno_Action;
import com.sinomagazine.fleajava.core.annotation.Anno_Controller;
import com.sinomagazine.fleajava.core.annotation.Anno_View;
@Anno_Controller(description=" : Default, ")
public class Default implements Controller {
@Anno_Action(description=" ")
@Anno_View(url="index.do")
public void actionIndex(){
}
}
package com.sinomagazine.fuseblog.controller;
import com.sinomagazine.fleajava.controller.Controller;
import com.sinomagazine.fleajava.core.annotation.Anno_Action;
import com.sinomagazine.fleajava.core.annotation.Anno_Controller;
import com.sinomagazine.fleajava.core.annotation.Anno_View;
public class D extends Default implements Controller {
@Anno_Action(description=" ")
@Anno_View(url="d.do")
public void actionIndex(){
}
}
package com.sinomagazine.fleajava.controller;
import com.sinomagazine.fleajava.core.annotation.Anno_Controller;
@Anno_Controller(description=" : Controller, ")
public interface Controller {
/**
*
*/
public static String controllerName = null;
/**
*
*/
public static String actionName = null;
}
今后javaの开発はXMLプログラミングをプログラミングしないことを望みます...XMLは良いですが、盲目的に崇拝しないでください...
先日、国内のある大唱快速開発のJAVAフレームワークを見ました.私は日、XMLプロファイルで、次から次へと、何も言いたくありません.javaプログラマー、XMLがきれいですか?それともjavaソースファイルがきれいですか?
私は怠け者かもしれないので、私は自分にとても无言です...