ドラえもん - 軽量のJavaフレームワークのモジュラー分離

関連するコード、私のオープンソースプロジェクトを参照してください。
https://github.com/qianxingchuan/doraemonを

簡単な紹介

2017年、このようなシステムに直接アクセスコードの新人にアカウントの認証の一環として、高速、フィットのみアリババ技術スタックシステムを、達成するために、私は、アスガルドと呼ばれるクラウドゲートウェイの物流部門で新人を作りましたゲートウェイを硬化、直接硬化一般化コードに別の例コールサービス部は、ゲートウェイHSFを呼び出します。これらは、アスガルドの拡張性と柔軟性のための方法は、計り知れない制限を引き起こしているコードを硬化させます。

新人から出発した後、2019年5月に、in vivoで、クラウドストレージ関連のプロジェクトについて、特に生体内のインフラをやっていることは完璧ではないので、作業の重複の多くは、このようなほぼすべてのWebアプリケーションとして、そこにあるが、正確に認証アプリの同じセットを書き込まれます共通CORSの、Web認証、および設定。これは私の非常に不幸なので、私は、生体内でアスガルドに再びそれを書き換えることを決めた、この書き換えは、物流新人期間を向上させるクラウドは各コールのステージのためにこのような高度なカスタマイズなどいくつかのことを、実行する時間ではありません前に、別の例ゲートウェイがなければなりませんその上で、応答性の完全非同期、およびサポートのWebSocketをサポートしています。

それは高度にカスタマイズを実現したい場合、我々はあまりにも重い非常にプラグイン可能な、OSGiのを処理するためのプラグインフレームワークを持っている必要があり、私は、我々のアプリケーションは、あまりにも多くの依存関係と公開された仕様を持っていたくない、オープンソースのソファのアリゴールドのドレスセット-ark、だけでなく、私の要求を満たすために、私にとって、それが十分に軽量だった、実際には、限り、私はそれぞれのプラグインに依存しないことができるよう、図1に示したゲートウェイアプリケーション、内側にあることができます。


2638620-3120722a503b6dc1.png
図1

ドラえもん:この記事では、軽量なフレームを実装するJavaクラス・ローダーの独立モジュールに基づいて、私に焦点を当てています。
内部同じJVMでは、我々のアプリケーションは、バンドルがお互いに表示されていない、例のうち、輸出の束のいずれかを呼び出すことができます。

ドラえもんクイック

認証インターフェースの異なる実装に基づきます

ドラえもんサンプルのサンプルプロジェクトを参照してください。

主なプロジェクト:
サンプル-AUTH-ファサード:認証インターフェース定義
サンプルのauth-bundle1:1認証インターフェイスベース達成するための
2ベースの認証インタフェースの実現:サンプルのauth-bundle2
サンプルのauth-プロジェクト:ランニングbundle1とbundle2をメインプログラム

実現のバンドル

  1. それはあなたのコードの骨格を構築するためのドラえもん・プロジェクト原型をベースとすることができます
  2. 図2に示す発生ドラえもん束ディレクトリ構造


    2638620-5ebb85433140c028.png
    図2

キー依存バンドルのpom.xmlは次のとおりです。

...

    <dependencies>
        <!--业务的基本依赖 -->
        <dependency>
            <groupId>io.github.qianxingchuan.framework</groupId>
            <artifactId>sample-auth-facade</artifactId>
        </dependency>
        <!--每个bundle的依赖,每个bundle 必须要有一个 io.github.qianxingchuan.framework.doraemon.BundleService实例 -->
        <dependency>
            <groupId>io.github.qianxingchuan.framework</groupId>
            <artifactId>doraemon-facade</artifactId>
            <version>0.1-RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.4.RELEASE</version>
        </dependency>
    </dependencies>
...
</project>

バンドル内に実装、フレームは、各バンドルのドラえもん走行時間が互いに分離されているため、限定されるものではなく、各バンドルはio.github.qianxingchuan.framework.doraemon.BundleServiceを実装するクラスを有していなければならない、とバンドルするように構成されました.propertiesファイル

次のようにbundle.properties構成は次のとおりです。

init-class=io.github.qianxingchuan.doraemon.sample.auth.run.SampleBundleRun
skip-class=io.github.qianxingchuan.doraemon.sample.facade.AuthFacade

バンドルが自動的に内部で行われていることを意味INIT-クラスのdoIt初期
スキップクラスは、クラスがクラスローダバンドルによってロードされていることを意味するものではありません

そこで、図1の私たちの表現によると、この構成では、クラスローダがロードするアプリケーションによってbundle1 SampleBundleRunモジュールクラスローダ、AuthFacadeによってロードされます。

MVNクリーンコンパイルパッケージによって書かれたすべてのコードの後、ファイルの束を生成するために、.zipファイル。

バンドルランニング

リファレンスサンプルのauth-プロジェクトエンジニアリング

おすすめ

転載: blog.csdn.net/weixin_34205076/article/details/90939522