ゴー・春:もう一つのゴースタイル!

ゴー春は、まだ箱から出して、依存性注入、自動構成を提供し、「設定を超える慣習」の原則に従って、サードパーティのライブラリを豊富に春の家族のバケットに実装されたJavaアプリケーションフレームワークをGoLang模倣されますプログラマがはるかに少ない定型的なコードを書くことができます統合機能。



1。

序文

复制代码

昨年末には、事業再編に伴う私のチームは、技術スタックは、以前のPHPから変更されます+ JavaはGolang + Javaのとなりました。すべての最初の、非常に適して初期接触Golangは、それが一般的な構文は異なっていたということです、そして素敵な成熟した開発フレームワークではありません。より多くのコードを書くための文法長い時間がゆっくりと適応するが、何の開発フレームワークがあまりにも簡単に開発の生産性とコード品質に影響を与えないであろう、とシニアのJava +春の家族のバケットの開発者として、私はそれを変更したいと考えていますがあります現状。いくつかの時間のために使用して探査を通じ、私はそれが解決アウトとしてのSpring(春のフレームワーク+春ブーツ+春の雲)のような家族のバケツを思い付くことができました!


Javaの世界自然言うまでもなく春の家族のバケット位置が、それは、プログラム開発およびJava開発者のためのAOPベースの開発指向のインタフェースに大きな柔軟性を、アノテーションベースの開発をもたらすことができる証明しただけではなく、言うこと、さらに重要なこともたらしました依存性注入、宣言型トランザクション、一貫性のある例外処理、自動化モジュールがロードされ、Mavenのシンプルな管理、容易なユニットテストのベストプラクティスを開発。


しかしGoLangとJavaは、結局、異なる、なぜ私は、彼は間違いなくそれから抜け出すことができたと考えていますか?この質問に答えるためには、実際には、別の質問、これらのコアコンピタンスを達成するために春の家族のバケットをサポートする、すなわちJava言語機能、GoLangとどのような類似した言語機能間に応じて?


ソースのトレース、パッケージをサポートするためのJavaバイトコード、反射、コメント、および他のメカニズムは、開発を達成するために春AOPの家族のバケット、依存性注入、宣言的トランザクション、負荷およびその他の自動化モジュールのコア機能をスキャンします。何のバイトコードGoLangが存在しないので、AOPを実現することはできません。しかし、そこにGoLangタグ、反射、_輸入と、init()のメカニズム、それは春の家族のバケットのコア機能のほとんどを必ずしもJavaがエレガント実装する必要はありませんが、また、依存性注入を達成するために、モジュール式の自動負荷が。そして、GoLangにもかかわらず、AOPを実現するだけでなく、ミドルウェアを通じて同じ機能を実現することができません。


いくつかの探査と実践した後、最終的に行くスプリングが誕生しました!私の目には、反抗精神と技術革新を持って生まれ、GoLangの態度は、表示される主流のプログラミング言語の構文と異なり、GoLang自体-春を移動して行くスプリングは、インタフェースと依存性注入に直面する疑問ですJavaは、みんなの前に現れた絶対の多様性を備えています。



2。

プロパティ

ゴー春は、まだ箱から出して、依存性注入、自動構成を提供し、「設定を超える慣習」の原則に従って、サードパーティのライブラリを豊富に春の家族のバケットに実装されたJavaアプリケーションフレームワークをGoLang模倣されますプログラマがはるかに少ない定型的なコードを書くことができます統合機能。要約すると、少なくとも以下の5つの特徴を持って、春が行きます:


初心者のための▍拡張可能なフレームワーク、あなたのコードを整理するエレガントヘルプ


下の写真はその一部の場所だけ傍受、RTMPサーバーの起動機能を示し、あなたはコードのスタート機能が長すぎる見て、コードの可読性を確保するために慎重な組織を必要とすることができます。


移動スプリング機能は明確コード、より粘着性であるように、使用開始フレームは、別のファイルにパッケージこれらのプロセスを開始してもよいです。次の図は、パッケージには、良いスタートファイルであることを示しています。



ブートプロセスのゴー春スターターフレームワークプログラムを使用した後のコードの非常にシンプルなラインになります!



インターフェイス+注射用依存▍、及びフレキシブル代替実装

ゴー・春は様々なプログラムがあり、統一APIインタフェースRedisのサービスが、基礎となる実装を提供します。ビジネスコードを書くためのRedisサービスのユーザーを使用している場合にのみ基礎となるプログラムのどのような採用を気にすることなく、APIインタフェースに焦点を当てる必要があります。



もちろん、ユーザーが最終的に実装サービスの基礎となるのRedisを選択し、この実現の導入は、唯一の1行のコードが必要です!



あなたは、実装の基礎となる他のRedisを変更したい場合は、実行するコードを1行だけです。



コンフィギュレーションファイルを簡素化▍自動バインディングの設定項目、

ゴー春のコードを使用してのみ、あなたは、変数にバインドする設定項目の良い名前を設定し、設定ファイルに設定項目を追加する必要があります - 春は自動的にバインド変数と設定項目を完了するのに役立ちます作品。



行くスプリング結合検出ライン環境はapplication-online.propertiesを使用するときには、そのような線を移動スプリングapplication-test.properties環境設定ファイルを使用して検出された場合のように、動作環境に応じて異なるプロファイルをサポートプロファイル。



効果的依存関係の管理プロジェクトを行うのに役立ち▍


抽象インターフェースを提供し、ユーザーが心配する必要はありません、モジュールごとに、春は行く、これが問題のアップグレードを解決するのは非常に簡単依存し、内部インタフェースを実現する方法です。ゴー・春はすべてのプロジェクトの依存関係の公開バージョンを保証する正しい、と行くスプリングを各リリースバージョンアップすると、ユーザーは唯一ゴー春のバージョンの変化に焦点を当てる必要がありますので、あなたが他の依存関係を楽しむことができる、に依存しますメリットの自動アップグレード!


▍複雑なユニットテストを簡単にします


死へ単に腐っ特にHTTPのGoLangユニットテストユニットテスト!ゴー春のプロジェクトではなく、偽のHTTP環境を使用するのでは、ユニットテストの時にプロジェクトの実際の動作環境を使用して起動することができます使用してください。



3。

パッケージ

Go-Spring 包含了四个核心项目,其中复制代码



  • IoCコンテナと依存性注入のコア機能を実現するスプリングが行きます。

  • フレームワークが自動的に設定する機能があり、ばねブート行くと、アプリケーションを起動します。

  • 利用可能なすべてのためのマイクロフレームワークを作成するために、オープンソースの世界に基づいて行く - ばね - クラウドサービス。

  • 行くスプリング・ディディは、サービスフレームの特性を有する内焦技術の微小滴を滴下しました。


4。

复制代码

以下は、私がどのようにゴースプリングを使用する方法を紹介するために、単純なHTTPサービスを通過します。


1.新しいmain.goファイルを作成し、スタートアッププログラムを作成し、設定ファイルのディレクトリを指定します。



プログラム中2.はじめエコーHTTPサービス。



3.新しいexample.goファイルは、サンプルサービスを実装し、()関数は、ルーティングHTTPインターフェースInitControllerに登録されています。



4. [スプリングIoCコンテナにオブジェクト登録サービスの例ので、移動スプリングロードされたルートを自動的に登録することができるHTTPユーザインタフェース。




そうゴー・春Frameworkは、スタートアップモジュールの典型的なサービスが配置されている時にロードすることができるサービスの一例main.goファイル、パケットで紹介。



私たちは単純だが、完全なHTTPサービスを取得する上記の5つのステップを経て、外出先での実行main.goコマンドを使用してプログラムを起動し、カールHTTPを使用:// localhostを:8080 /テストが要求された結果を以下に見られることができ返します:


{"code":900001,"msg":"biz error"}复制代码


OK、それはすでにゴー春のパワーを感じるようになったではありません!ここでは、ユニットテストを書く方法でしょうプロジェクトのゴーSpringフレームワークの使用を見てください。


まず、私たちはいるTestMain本当のhttpサーバを起動するために関数を記述することができます。



実際の図は、コードは、単一のラインに合理化、スリムであり得る示します。


その後、私たちは偽物やモックする必要はありません、実際のHTTPリクエストを送信するためにテスト関数を書くことができます。



実行ユニットテストは、あなたが完全なモックと偽の、完全に機能、ブレークポイントすることができ、デバッグテスト環境を取得しないことがわかります。



5。

概要

复制代码

上に示したHTTPサービスとユニットテストを作成する機能に加えて、行くスプリングは、MySQLサービス、Redisのサービス、カフカサービス、ddmqサービス、サービス登録およびサービス発見RPCサービスと様々なサービス、そしてより多くの新しいコンポーネントをサポートしてきました新機能は、内因性の安定した流れによって、ビットは、将来的に参加していると行く-春は、ますます使用する方が簡単に、より完璧になります!


別のゴースタイル!、私は個人的にゴー春は新しいプログラミングモデル、あるいは新しい生産的な方法を表していると思うし、私は行く-春の過程で、心を解放する効率を向上させ、より多くの喜びと自由を得ることができることを願っていますまた、友人や家族にいくつかの時間滞在!


プラット&ホイットニー製品技術からこの記事の最初の旅行(ID:pzcxtech)





おすすめ

転載: juejin.im/post/5d50f403e51d4561e84fcbfa