Magician-Containers 1.0.0がリリースされ、Magicianファミリーに新しいメンバーが追加されました

最近、Magicianを使用してプロジェクトを開発する過程で、いくつかの問題が見つかりました。Magicianには当面対応するソリューションがないため、特定のメソッドを監視したり、ポーリングの時間指定タスクを開始したりすることがありますが、これはもう少し面倒です。しかし、既存のマジシャンに機能を追加したくないのは、プロジェクトがどんどん大きくなり、最終的には大きな太った男になり、柔軟性が失われるためです。開発者がそれを使用すると、必要な機能や導入されていない機能に関係なく、一度にプロジェクトに参加することは私には受け入れられません。また、マジシャンの本来の意図に反していたため、最終的には新作としてリリースすることにしました。ユーザーに使用するかどうかの権利を与えます。

マジシャン-コンテナがもたらすもの

  1. Bean管理(IOCなし、Beanの関数をバインドし、いくつかの問題を解決するためだけに)
  2. AOP
  3. 時限タスク

Bean管理

クラスにアノテーションを追加するだけで、コントローラーで使用することはできず、すべてのクラスをBeanに変換する必要はありません。開発者は自由に決定できます。

このクラスでAOPまたはスケジュールされたタスクを使用する必要がある場合にのみ、Beanに変換することをお勧めします。

@MagicianBean
public class DemoBean {

}

AOP

AOPのロジックを書く

public class DemoAop implements BaseAop {

    /**
     * 方法执行前
     * @param args 方法的参数
     */
    public void startMethod(Object[] args) {

    }

    /**
     * 方法执行后
     * @param args 方法的参数
     * @param result 方法的返回数据
     */
    public void endMethod(Object[] args, Object result) {

    }

    /**
     * 方法出异常后
     * @param e 方法的异常信息
     */
    public void exp(Throwable e) {

    }
}

監視する必要のある方法に固執する

@MagicianBean
public class DemoBean {

    @MagicianAop(className = DemoAop.class)
    public void demoAopMethod() {

    }
}

時限タスク

現在、間隔を置いたポーリングのみがサポートされており、cron式はまだサポートされていません

@MagicianBean
public class DemoBean {

    // loop: 轮询频率,单位:毫秒
    @MagicianTimer(loop=1000)
    public void demoTimerMethod() {

    }
}

Beanオブジェクトを取得します

メンバー変数を定義するときに値を直接割り当てることはできません。次の例は、推奨される書き込み方法です。詳細については、公式Webサイトのドキュメントを参照してください。

@MagicianBean
public class DemoBean {

    private DemoBean demoBean;

    public void demoMethod() {
        demoBean = BeanUtil.get(DemoBean.class);
    }
}

起動時にリソースをロードする

HttpServer httpServer = Magician
        .createHttp()
        .scan("com.test"); // Scanning range (package name)

// 在scan方法执行后,才可以加载bean,顺序一定要注意
MagicianContainers.load();

httpServer.bind(8080);

詳細については、公式Webサイトにアクセスしてください:https ://magician-io.com

おすすめ

転載: www.oschina.net/news/202758/magician-containers-1-0-0-released