春の過去と現在

 

 

春の過去と現在

  私は、Webを開発するためのフレームワークを使用していないを経たと考えている70、80を投影し、そのような知覚、あまりにも簡単にプロジェクトを開発するために、今日のプログラマーがあるでしょう、基本的には唯一のビジネスをどのように達成するかを気にする必要があり、技術だけでフレームワークを統合することができます。戻る2007年に、正式にリリースされたオープンソースのJava言語に基づいたフレームワークは、春と呼ばれる、非常にダイナミックで美しい名前を取りました。これはオープンソースの軽量のJava SE(Java標準版)/のJava EE(Javaのエンタープライズ版)アプリケーション開発フレームワークで、その目的は、エンタープライズアプリケーション開発を簡素化することです。従来のアプリケーション開発では、完全なアプリケーションが連携して動作するオブジェクトのセットで構成されます。したがって、より多くの懸念は、これらのオブジェクトは、高い重合を所望の機能を協働し、低に結合されている実行する方法ビジネスロジックの開発に加えて、アプリケーションの開発です。ビジネスロジックの開発は避けられないですが、うちのオブジェクトを作成し、これらのオブジェクト間の依存関係を管理するために私たちを助けるためのフレームワークがある場合に多くを開発するのは簡単だろう。一部の人々は言うだろう:「?抽象工場、ファクトリメソッドパターンはまた、私たちはオブジェクトを作成するのに役立つことができない」発電機モード「オブジェクト間の依存関係に対処する私たちを助けるために、あなたは、これらの機能が行う実行できないのですか?」しかし、我々はこれらの別を作成する必要がありますいくつかのファクトリクラス、ビルダークラス我々はコンフィギュレーションの種類、オブジェクト間の依存関係を管理することで、オブジェクトを作成することができれば、私たちの負担を増加させ、これらの余分なクラスを管理する必要が、我々は工場や発電機で作成する必要はありません。そして、オブジェクト間の依存関係を管理するので、我々は他のことをする時間を大幅に節約することができ、多くの作業を減らす開発をスピードアップすることができない、Springフレームワークは、私たちの前で、このミッションです。

  私たちはオブジェクトとその依存関係を管理するだけでなく、一般的なロギング、パフォーマンス統計、セキュリティ制御、例外処理のためにカットする機能など、多くの便利な機能を提供するだけでなく、私たちはデータベーストランザクションの最も厄介な管理を支援手助けに加えて、Springフレームワーク、それ自体はシンプルなJDBCアクセスの実装を提供し、(そのようにHibernate \ JPAなど)、サードパーティのデータ統合フレームワークへのアクセスを提供し、(Javaのメールは、タスクは石英などのスケジューリング)のJava EEテクノロジの統合の様々な、ウェブの独自のセットを提供しますここから私たちは、春には、独自の機能を提供することに加えて、一般的に接着剤として知られている、スーパー接着剤のプラットフォームですが、また、結合および他の技術を提供することを層フレームワークSpring MVCの、だけでなく、サードパーティのWebフレームワークと非常にシンプルな統合を、言うことができますコンピテンシーの枠組み、我々は終わり何の技術開発のために利用するには選択のより多くの自由ができるように。そしてかどうかは、アプリケーション開発のために、このプラットフォームを使用できるJava SE(C / Sアーキテクチャ)アプリケーションやJava EE(B / Sアーキテクチャ)です。今日はそれがすでに生態系のようなものとなっている、もはやSpringフレームワークではありません。構成上ポータブル達成条約のSpringBoot開発、微小生態系SpringCloudサービスは、非常に便利溶液(ゲートウェイ・コンフィギュレーション・センター、登録センター、サービス連携とガバナンス、等)を提供します。次に、私たちに何をもたらすのは、最終的には、深さ春に探検しましょうか?

これは、すべての豆を開始します

  この概念は、Beanが、早ければ1996年のように、ジャワの原点から開始する必要があり、JavaがMicrosoftの位置には、いくつかの脅威に、なぜなら自分のクロスプラットフォーム、クロスシステムの特性により、単に新しい、駆け出しのプログラミング言語できます。興味のある学生のためのJavaが閲覧できSUNの企業やネットスケープ NetscapeとマイクロソフトMicroSoftの戦争の歴史を。https://www.jianshu.com/p/b35601c9d7cdとLiの「シリコンバレーのビジネス戦争」の本をお勧めします。あなたは、ブラウザのコンポーネントとして、Webアプリケーションを開発するためのアプレットのJavaを使用することができるという理由だけで、関心のJavaその人はその時が、開発者はすぐにこの新しい言語がより多くのことを行うことができますことを発見しました。前にすべての異なる言語でのビジネスであるが、突然Mengjin、Javaは、ソフトウェア業界の時に(可能なモジュラー建物の複雑なシステムを可能にするが、それはアイデアOPの開発とプロセス指向開発の伝統的な開発効率だった、ソフトウェアは躊躇していません前に。事業の深化複雑で、開発がより困難になってきている。実際には、彼はまた、OOP思考の急速な発展のオブジェクト指向開発期間だった、彼は1980年代後半、成熟度と1990年代に育った、今ではほとんどのプログラミングです言語はオブジェクト指向すでにあります。)

  12月には、日もパスせずに注文したその時にリリースしましたが、その後、誰もがJavaBeanの1.00仕様を知っています。初期のJava用JavaBeanの仕様では、彼女は、ソフトウェアコンポーネントモデルを定義します。この仕様は、単純なJavaオブジェクトを再利用することができ、また簡単に、より複雑なアプリケーションを構築することができるだけでなく、コーディング戦略のセットを定義します。JavaBeanのは、もともとアプリケーション・コンポーネントを再利用するために設計されていますが、彼らは主に建物のフォームコントロールのために使用されているとき、そして、結局、それはPCの時代の主流となっています。時間と比較するとデルファイ、VBとC ++の繁栄、彼女はまだあまりにも簡単に見える、と彼らはすべての「本当の」仕事のニーズを埋めることができないということです。

  サポート複雑なアプリケーションは、多くの場合など、トランザクション、セキュリティ、分散サービスを必要とするが、直接のJavaBeanが提供されていません。1998年3月になるよう、Sunは、サーバーへのJavaコンポーネントの概念を拡張するために設計されたEJB1.0仕様をリリースし、多くの必要なエンタープライズクラスのサービスを提供していますが、彼はもはや、早期のJavaBeanのように簡単ではありませんA。実際には、ほかにEJBビーン、他のJavaBean関係と微々たる名に。

  多くのシステムがありますが、それが構築された現実のEJBに基づいていますが、EJBは、元のビジョンを達成されることはありません:開発を簡素化します。EJB宣言型プログラミングモデルは、実際にこのような取引やセキュリティなど、開発のインフラレベルの多くを簡素化し、一方、実現をサポートする配備記述子およびコードでEJBによって複雑になります。時間が経つにつれて、すでにEJBに幻滅している多くの開発者が、彼はもっと簡潔な方法を模索し始めました。

  再び軌道に再びJavaコンポーネントの概念の現在の開発。新しいプログラミング技術のAOPとDIが浮上しているEJBは、JavaBeanのよう持つことができる前に、彼らは強力な機能を提供します。これらの技術は、任意のEJBの複雑さを導入することなく、EJBに似たPOJOプログラミングモデルのためのステートメントを提供します。十分な場合には、単純なJavaBeanは有能な、人々はかさばるEJBコンポーネントを作成するとは思わないだろう。

  客観的に言えば、EJBの開発はPOJOベースのプログラミングモデルに貢献しています。新しいアイデアの導入は、規範は、前回の最新のEJB仕様に比べて簡略化され、前例のないを見てきましたが、多くの開発者のために、それはすべて手遅れに来ました。EJB3仕様がリリースされたこのような大規模な環境に存在するSpringフレームワークが、他のPOJOベースの開発アーキテクチャは、デファクトスタンダードとなっています。

春はに設計されています

  春は、エンタープライズアプリケーションの開発と設計の複雑さに対処するためである、彼女はたくさんのことを行うことができます。開発を簡素化するために:しかし、最終的には基本的な概念の春はほんの少しで、これらのアイデアのすべてが基本的な使命にさかのぼることができる、サポートされています。これは実際には、多くの簡略化を図ることの特定の方法の枠組みの中で主張している、厳粛な約束です。春には、Java開発のあらゆる側面を簡素化するために決定されます。

この点で、彼女は4つの主要な戦略をとっています。

1、ベースPOJO軽量、低侵襲性のプログラミング。

疎結合と依存性注入のためのインターフェースを介して2、。

図3に示すように、宣言型プログラミング部と慣性に基づきます。

4、セクションおよびテンプレートによって定型的なコードを減少させます。

主にスルー:達成するためにこれらの3つの方法の依存性注入のための豆(BOP)(DI)とアスペクト指向(AOP)。

BOPのプログラミングが開始されます

  春は豆指向プログラミング(豆指向プログラミング、BOP)で、豆は、春の本当の主人公です。OOPの春オブジェクト意義でBeanとしての役割は、のように、春の豆は、春のは意味はないであろう存在しませんでした。オブジェクト間の依存関係を管理するために、コンフィギュレーションファイルまたは注釈を介して設けられたバネIOCコンテナ。制御の反転は、(最も一般的な実装は、依存性注入(依存性注入、DI)と呼ばれ、「依存のルックアップ(依存関係の検索、DL)」と呼ばれる方法があり、彼女はC ++やJava、PHP、および.NETで使用されます。春は早いである彼女は、)依存性注入の方法を含み、クエリに依存しているが、それは照会するために使用頻度は、直接依存性注入として知られているコントロールの春の反転になるよう、春はすぐに除去することが、低すぎますオブジェクトを作成していないが、彼らが作成された方法を説明:基本的な概念です。直接サービス・コンポーネントを必要とするコンフィギュレーションファイルに記述されているオブジェクトとサービスコード、しかしと接続されていません。コンテナ一緒にこれらの責任(IOCコンテナは、Springフレームワークです)。典型的なシナリオではIOCは、コンテナは、すべてのオブジェクトを作成し、メソッドを呼び出すために何時間を決め、それらを一緒に接続するために必要なプロパティを設定します。

依存性注入

  春のデザインのコアorg.spring.framework.beansパッケージ(コア・アーキテクチャはorg.springframework.coreパッケージである)、それはJavaBeanコンポーネントを使用するために設計されています。このパッケージは、通常、ユーザーが直接使用されていませんが、サーバーによってベース調停他のほとんどの機能として使用されるように。抽象化の次の最高レベルは、工場出荷時のデザインパターンの実現である、たBeanFactoryインタフェースです。名前でオブジェクトを作成し、検索できるようにします。オブジェクト間たBeanFactory関係も管理することができます。オブジェクト間たBeanFactory関係も管理することができます。

たBeanFactoryは、2つの最低レベルのオブジェクトモデルをサポートしています。

シングル例1:それは、クエリで検索することができ、特定の名前を持つオブジェクトのグローバル共有インスタンスを提供します。Singlentonはデフォルトで最も一般的なオブジェクトモデルです。

2.プロトタイプ:各検索は、オブジェクトの別のインスタンスを作成することを確実にします。各ユーザーは、プロトタイプモデルを使用して、独自のオブジェクトを必要とする場合。

コンセプトは、IOCのコンテナのための基礎として、春の豆を植えることです。IOCは、物事を処理する責任がフレームワークにアプリケーションコードから転送されるだろう。

AOPプログラミング

  アスペクト指向プログラミング、つまりAOPは、それはプログラマが横断的関心事を行うか、モジュラー(例えば、ロギングおよびトランザクション管理のような)一般的な業務の境界を横断することができ、プログラミングのアイデアです。コア構造は、再利用可能なモジュールの複数のクラスにそれらのパッケージの動作に影響を与えるAOP(セクション)の態様です。

  AOPとIOCは、彼らはすべてのエンタープライズアプリケーション開発における複雑な問題を解決するためのモジュール式のアプローチを使用し、補完的な技術です。典型的なオブジェクト指向開発モードでは、ログ記録を達成するためのJavaクラスとメソッド内のすべての文をログに記録することができます。AOPモードでは、ログサービスのモジュールを有効にすることができます、と宣言でログインする必要がありコンポーネントに適用します。もちろん、利点は、Javaクラスは、ログサービスの存在は、関連するコードを考慮する必要はありません知っていないということです。したがって、スプリングAOPを使用して記述されたアプリケーションコードが疎結合されています。

  AOPの機能は完全に春のトランザクション管理、コンテキストログや他のさまざまな特性に統合されています。

  一般的に使用されるシーンのAOPプログラミングはありますので、上の認証(認証局)、オートキャッシュ(自動キャッシュ)、エラー処理(統合エラー処理)、デバッグ(デバッグ情報の出力)、ログ(ログ)、トランザクション(トランザクション処理)とを。

 Spring5システムアーキテクチャ

  約20のモジュールの春の合計、異なるコンフィギュレーション1300の複数のファイル。これらの成分は、それぞれ、コアコンテナ(コアコンテナ)に統合され、AOP(アスペクト指向プログラミング)、およびデバイスサポート(Instrmentation)、データアクセスと統合(データアクセス/ Integeration)、ウェブ、メッセージ送信(メッセージ)、テスト、6収集モジュール。以下はSpring5のブロック構成図です。

モジュールのセットまたは各モジュールの構成Springフレームワークは、単独で存在してもよく、一つ以上のモジュールを実現するために組み合わせることができます。次のように組成と各モジュールの機能は以下のとおりです。

コア・コンテナ

バネ豆、スプリングコア、ばねコンテキストとスプリング式(スプリング式言語をSpeI)4つのモジュール。

 スプリングコアとバネ豆モジュールは、制御の逆転(制御の反転、IOC)、及び依存性注入(依存性注入、DI)を含む、Springフレームワークのコアモジュールです。たBeanFactoryインタフェースは、工場モデルで具現化されるSpringフレームワークのコアへのインタフェースです。制御及びアプリケーション依存仕様と実際のアプリケーション・コードを用いた構成の反転たBeanFactoryを分離しました。しかし、自動的にBeanのインスタンス化していないインスタンス化コンテナたBeanFactoryは、依存関係をインスタンス化しますビーンたBeanFactoryコンテナがビーンと組み立てされている場合にのみ使用されます。コアモジュールの上に春・コンテキストモジュールアーキテクチャは、彼は透明性や他の機能をロードするために彼女のためにビーンのライフサイクル管理、イベントフレームワークとシステムリソースを追加し、たBeanFactoryを拡張します。また、モジュールはまた、電子メールアクセス、リモートアクセス、タスクのスケジューリングとして、エンタープライズレベルのサポートの数を提供し、ApplicationContextのモジュールのコア・インタフェースである、彼女はスーパークラスたBeanFactoryあります。たBeanFactory異なる容器がApplicationContextのインスタンス化された後、スタンバイ状態になるように、自動的に、単一インスタンス豆のアセンブリのためのすべての依存関係でインスタンス。ばねコンテキストサポートモジュールは、スプリングIOCコンテナ、サブコンテナおよびIOCの拡張サポートです。ばねコンテキストインデクサモジュールスプリングクラス管理コンポーネントとクラスパススキャン。バネ式モジュールは、それは、照会オブジェクト管理操作だけでなく、容易にオブジェクトのメソッドがそうでアレイ、コレクションおよび操作を呼び出すことができ、統一表現言語(EL)拡張モジュールです。その構文は、従来のELに似ていますが、関数呼び出しと、単純な文字列の数に最良のテンプレート機能、追加機能を提供します。言語の特徴は春の製品設計のニーズに基づいており、彼は簡単に春IOCと対話することができます。

AOPとデバイスのサポート

スプリングAOP、バネ側面とばね具3つのモジュール。

ばねは、ばねが、AOP別のコアモジュールは、AOPは、メイン実装モジュールです。プログラマのための最大のプログラミングのアイデアの一つに影響を与え、OOPを次のように、AOPを大幅にプログラミングのための人々のアイデアを開きました。春には、彼はJVM動的プロキシ技術であり、そのような事前通知、リターンなどAOPの実装を、クロスカットのシリーズを設計、などのアドバイスをスローし、同時に、ポイントカット出発点と一致するように、インターフェースは、使用することができますポイントカット設計断面既存の切断方法関連のニーズに応じて拡張することができます。ばね態様モジュールは、主にAOP春AOPの実装の多様性を提供するために、自己AspectJのフレームを統合します。春-機器モジュールは、JAVA SE「java.lang.instrument」の設計に基づいている場合、AOPをサポートモジュールを検討する必要があり、主な役割は、プロキシクラスを介して実行プログラマ、有効になっているJVMにあるプロキシクラスを生成し、 AOP機能を実現するために、それによって、クラスの機能を変更、バイトのタイプを変更します。分類では、私はここで、この場所でAOPモジュール春の公式ドキュメントの下分に少し漠然と彼を置く純粋にビューの個人的なポイントです。

データアクセスと統合

スプリングJDBC、スプリングTX、バネORM、バネJMSとばねOXM 5つのモジュール。

 スプリングJDBC実装モジュールは、簡略化された動作のためにスプリング、スプリングJDBCが提供するメインモジュールJDBC抽象化フレームワークです。JDBCプログラミングを単純化するためにJDBCテンプレート、リレーショナルデータベースオブジェクト指向の方法、SimpleJdbcの道、トランザクション管理を提供するための主な方法は、主に実装クラスは、JdbcTemplate、SimpleJdbcTemplateとNamedParameterJdbcTemplateです。春-TX春JDBCトランザクション制御モジュール実装モジュールです。Springフレームワークを使用して、任意のレベルでそのAOP構成、柔軟な構成によって、非常に良いパッケージ事務を行っている。しかし、多くのニーズや用途に、直接JDBCトランザクション制御は、まだその利点を持っています。実際には、ビジネスは、ビジネス・ロジック・ベースであり、ビジネスレイヤ内の方法は、完全なビジネスに対応している必要があり、ビジネスが失敗した場合、全体のトランザクションがロールバックされ、従って、それがサービス層に配置する必要が絶対にトランザクション制御があるが、それぞれの方法で永続化層を分割してはならないことを保証するために、アトミック・オペレーション:永続層の設計は非常に重要な原則に従ってください。春のJDBCトランザクション制御を使用するときしたがって、それは、その特殊性に注意を払う必要があります。製造されたフォームクッションは、DAO(データアクセスオブジェクトリソース管理のための微細www.gupaoedu.com 9スプリングORMモジュールORMフレームワーク支持部、主統合Hibernateは、Javaの永続性API(JPA)およびJavaデータオブジェクト(JDO)となります)の実装およびトランザクション戦略。ばねOXMモジュールは、OXMは、XMLデータにO / M-マッパ、マッピングJavaオブジェクトである、またはJavaオブジェクトにXMLデータをマッピングするオブジェクトからXMLマッピングの略語であり、(OXMをサポートするために抽象化の層を提供することに主に)、例えば:JAXB、ヒマシ油、XMLBeansの、その上のJiBXとXStreamのと。春-JMSモジュール(Javaのメッセージングサービス)後の春のフレームワーク4.1からの情報を送受信するために、彼はまた、春・メッセージングモジュールのサポートを提供します。

Webコンポーネント

ばねウェブ、バネwebmvc、バネのWebSocket とばねwebflux 4つのモジュール。
春-Webモジュールの春は、主にコア・コンテナの上に構築された、最も基本的なWebサポートを提供し、またはIOCを初期化するリスナーのサーブレットコンテナによって、また、いくつかのWeb関連のサポートが含まれています。ばねwebmvcモジュールはウェブサーブレットモジュールのよく知られており、スプリングMVC(モデル-ビュー-コントローラ ) Webアプリケーション。ばねのWebSocketモジュールは、主にWebフロントエンドとの全二重通信プロトコルです。春-webfluxは非同期、ノンブロッキング、イベント駆動型サービスを作成するために使用することができ、新たな非目詰まり官能性反応性のWebフレームワークであり、およびスケーラビリティが非常に良いです。

通信报文

Spring4は、新しいモジュールを追加し、最初からその春、メッセージングモジュールは、主な責任は、Springフレームワークのためにいくつかの基本的なメッセージングアプリケーションを統合することです。

統合テスト

いくつかの統合テストや他のテストは、主にテストのためのサポートを提供し、春・テスト・モジュールでどのようなビジネスケースのために非常に重要である実行できるように、すべての後、あなたはあなたのアプリケーションサーバに(プログラム)を放出または他の事業所に接続する必要はありませんの

互換性のある統合

すなわち、スプリングフレームワークBOMモジュール、部品表。春は、異なるバージョンの依存関係の問題の異なるモジュールを扱います。

モジュール間の依存関係

春の公式サイト、各種のモジュールSpring5詳細な説明との関係:

 

 私はまた、Spring5モジュールは、小さなパートナーを助けることを望んで、モジュールの記述間の依存関係のシステムをまとめています。

 

 

接下来的博文中,我们将深入了解 Spring 的核心模块功能。基本学习顺序为:从 spring-core 入手, 其次是 spring-beans 和 spring-aop,随后是 spring-context,再其次是 spring-tx 和 spring-orm, 最后是 spring-web 和其他部分。

Spring 版本命名规则

描述方式 说明 含义
Snapshot 快照版 尚不不稳定、尚处于开发中的版本
Release 稳定版 功能相对稳定,可以对外发行,但有时间限制
GA 正式版 代表广泛可用的稳定版(General Availability)
M 里程碑版 (M 是 Milestone 的意思)具有一些全新的功能或是具有里程碑意义 的版本。
RC 终测版 Release Candidate(最终测试),即将作为正式版发布。

 

Spring 源码下载及构建技巧

Spring5 源码下载注意事项

首先你的 JDK 需要升级到 1.8 以上。Spring3.0 开始,Spring 源码采用 github 托管,不再提供官网下载 链接。这里不做过多赘述,大家可自行去 github 网站下载,我们使用的版本下载链接为: https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip,下载完成后, 解压源码包会看到以下文件目录:

 

基于 Gradle 的源码构建技巧

由于 Spirng5 以后都是采用 Gradle 来编译,所以构建源码前需要先安装 Gradle 环境。Gradle 下载地 址:https://gradle.org/releases,我使用的是 Spring5 官方推荐的版本 Gradle4.0,下载链接为: https://gradle.org/next-steps/?version=4.0&format=bin , 下 载 完 成 后 按 以 下 步 骤 操 作 , 以 Windows 操作系统为例:

第一步:配置环境变量

第二步:添加环境变量:Path:%GRADLE_HOME%\bin

第三步:检测环境,输入 gradle -v 命令,得到以下结果:

 

第四步:编译源码,cmd 切到 spring-framework-5.0.2.RELEASE 目录,运行 gradlew.bat

第五步:转换为 eclipse 项目,执行 import-into-eclipse.bat 命令,构建前,请确保网络状态良好,按 任意键继续。

第六步:等待构建成功(若中途出现错误,大部分情况是由于网络中断造成的,重试之后一般都能解决 问题),构建成功后,会出现如下界面:

到这一步为止,还在使用 Eclipse 的小伙伴已经可以将项目导入到 Eclipse 中了。而我们推荐使用的 IDEA 也比较智能,可以直接兼容 Eclipse 项目。接下来看下面的步骤:

第七步:导入 IDEA。打开 IntelliJ IDEA,点击 Import Project,弹出如下界面,选择 spring-framework-5.0.2.RELEASE 文件夹:

第八步:等待构建完成,在网络良好的情况下大约需要 10 分钟便可自动构建完成,你会看到如下界面:

第九步:在 IDEA 中,如果 Project 下的子项目文件夹变成粗体字之后,说明已经构建成功。还有一种 验证方式是:找到 ApplicationContext 类,按 Ctrl + Shift + Alt + U,出现类图界面说明构建成功。

Gradle 构建过程中的坑

如果项目环境一直无法构建,项目文件夹没有变粗体字,类图无法自动生成。那么你一定是踩到了这样一个坑。

第一步:首先打开 View->Tool Windows -> Gradle

然后,点击右侧 Gradle 视图中的 Refresh,会出现如下的错误:

 

第二步:看错误,显然跟 Gradle 没有任何关系,解决办法:

1.关闭 IDEA,打开任务管理器,结束跟 java 有关的所有进程。

2.找到 JAVA_HOME -> jre -> lib 目录,将 tools.jar 重命名 tools.jar.bak。

3.重启 IDEA,再次点击 refresh,等待构建完成。

 

おすすめ

転載: www.cnblogs.com/create-my-future/p/11233940.html