この章の内容:JAVA EE>春>春ブーツ
A、JAVA EE紹介
1.1のJava EEの利点:障害Web開発、プログラマの技術的な状態の終了は、思考の同じ種類を持つ建築家はどのような構造に考えると、アプリケーションが(エンタープライズアプリケーションやWebサイトを参照してください)を開発します。それは、エンタープライズアプリケーション技術を提供するため、標準化を達成するために、簡略化し、開発を。
実装仕様:
-
-
-
- Webサポート:立ち上がりB / S構造、JAVA EE対応するServlet仕様、所定のWebコンテナを有し、サーブレットアセンブリ、ならびにJSP&JSTL処理動的ページ。
- トランザクションサポート:トランザクションマネージャを提供します。
- メッセージングサービス:JMS
- データベース永続レイヤ:EJB仕様、およびそれ以降のJPAのより実用的な操作性を提案したが、この方法は、データベースにアクセスするために使用しました
- コンテナ:そのような管理コンポーネント(EJBおよびサーブレット)のような容器、およびそのようなJTS、JMS等の必要なサービス・コンポーネントを提供します。
-
-
1.2のJava EEの欠点:
-
-
- あまりにも複雑:開発と展開、より複雑な方法
- 分散追求:ほとんどのアプリケーションでは、すべてのJava EE嘉定分散システムではありません。
- こうしたのみの取り扱いとJMSメッセージとして:それはタイムリーな人気のあるオープンソースの技術と組み合わせることはできません
- 高いです
-
二、春
2.1スプリングIoCコンテナとAOP
IoCコンテナコア
春のコンテナにオブジェクトコード中のビジネスでは、春のコンテナが追加通り抜ける注釈プロファイルを初期化し、機能強化するために、ビジネス・オブジェクト・コードに。
このオブジェクトのメソッドは、コメントを@RequestMappingしている場合、オブジェクトの注釈@Containerの宣言では、春には、このオブジェクトはWebコンテナであると思うだろう、それは、Javaメソッドの呼び出しにクライアントのHTTPリクエストによって開始されます。
EG 春は通常サービス@、Conponent @、いくつかの@Controllerを提供設定@ 注釈、これらのみ注釈付きのクラスを使用して、春のコンテナに注意を引くし、管理し、注釈に基づいてオブジェクトの意味を強化します。
// HelloworldControllerインスタンス初期スプリング容器は、容器中に、クライアントによって開始さ/sayhello.html要求に対して、メソッドが実行を言うし、自動的に対応するリクエストパラメータ名たとえばメソッドの宣言に従って。
@Controller パブリック クラスHelloworldController { @RequestMapping( "/sayhello.html" ) 公共@ResponseBody文字列言う(名前文字列) リターン "こんにちは" + 名 }
egSpringは、管理や、一般的なビジネス・ロジックに使用される一般的な注釈@Serviceなどの任意のオブジェクトを、高めることができます。コンテナ管理もBeanのマネージドBean管理することができ@Serviceこの例@Autowired自動注入を使用してクラスHelloworldControllerで、UserServiceのクラスを注釈を付けたとして、強化提供します。
@Controller パブリック クラスHelloworldController { @Autowired UserServiceのUserServiceの。 }
AOP(アスペクト指向プログラミング)
動的に事前コンパイルまたは実行時の方法によりターゲットオブジェクトに機能を追加。AOP別のエンタープライズ・アプリケーション・ビジネス・ロジックおよびシステム・レベル、トランザクションサービスなどのサービス、ならびに監査、アプリケーションや他のコードへのセキュアなアクセス。たとえば、ユーザーのアクセス制御を実現するために、機能はコントローラに次のような各メソッドを、動的にユーザーを追加するために、春AOP許可検証機能で、コントローラの各メソッドのためのカスタム注釈を使用することがあります:
(「/ adduser.html」@RequestMapping ) @関数(「user.add」) 公衆@ResponseBodyは、アドユーザーの文字列(文字列名){ ... } //関数注釈文字列を受信し、カスタム注釈でありますこれは、サービス機能に対応するコントローラメソッドを表します。ユーザーは「user.add」機能、データベース内の設定にアクセスできるかどうか。
三、春ブーツ
春ブーツ春の簡素化、アプリケーションの開発には、Springアプリケーションを実行することができます設定する必要がありません。<たartifactId>ばねブートスタータウェブ</たartifactId>:スターターを介してシステムレベルのサービスを提供するために、そのようなWebアプリケーションを開発するように、のみでのpom.xml(達人)に宣言する必要があります
春ブーツは、多くの利点があります、このようなビルトイン提供するために、TomcatやJettyはコンテナとしての複雑な設定を必要としません。ジャーパッケージ管理に頼ることで、組立技術を自動化。
四、こんにちは、春ブーツ
4.1アプリケーションプロジェクトは春ブーツになって:
簡単なWebアプリケーション:まず、Mavenプロジェクトを作成します。そして、pom.xmlファイルを見つけ、春ブートアプリケーションにプロジェクトを作るために次のエントリを追加します。
< 親> < groupIdを> org.springframework.boot </ groupIdを> < たartifactId >春・ブート・スターター・親</ たartifactId > < バージョン> 2.0.0.M4 </ バージョン> //版本可能会有问题。 < / 親>
ウェブ4.2のアプリケーションが構築されているので、そう、依存春・ブート・スターター・ウェブを追加し、以下を追加します
< 依存性> < 依存性> < のgroupId > org.springframework.boot </ のgroupId > < たartifactId >ばねブートスタータウェブ</ たartifactId > </ 依存> < 依存性>
注意:春ブート-依存関係はSpring MVCの、RESTfulなサービスのためのビルトインのTomcat、およびサポートにデフォルト設定されます。
4.3一般的なカテゴリのクラスに春ブーツ
一般的なJavaクラスCh1Applicationため、@SpringBootApplication前に行を追加し、メインメソッドの線SpirngApplication.run(C h1Application.class、引数)を追加
コード例:
パッケージcom.bee.sample.ch1。
@SpringBootApplication パブリック クラスCh1Application { 公共 静的 ボイドメイン(文字列[]引数){ SpringApplication.run(Ch1Application。クラス、引数)。 } }
このクラスは、実行することができ、完全に春ブートアプリケーションになります。ただ、ノー書かれたコントローラので、それはブラウザを介してアクセス可能ではなく、図に示すように、その後、HelloworldControllerと呼ばれるクラス、パッケージ名com.bee.sample.chq.controllerを作成します。
パッケージcom.bee.sample.ch1.controller @Controller パブリック クラスHellowwoeldController { @RequestMapping( "/say.html" ) 公共@ResbonseBody文字列の発言(){ リターン "こんにちは春ブーツを" 。 } }
注:@Controllerは、そのようなことを示すSpring MVCのアノテーションはWeb要求を処理するための責任があるあります
@RequestMapping Spring MVCのアノテーションは、要求されたパスのマッチング処理が呼び出された場合は、注釈付き表示しています
@ResponseBodyは、この方法は、テキストではなく、ビューの名前を返すことを示しています
4.4ホット・デプロイ
このクラス、非常に不便を変更する時には、上記の例では、起動時に再実行する必要があります。ソリューションは、春ブーツ・デベロッパーツールの依存関係です。変更されたクラスの後、春のブートが自動的に再起動します。
< 依存性> < のgroupId > org.springframework.boot < のgroupId > < たartifactId >ばねブートデベロッパーツール< artifacId > < オプション>トゥーレ</ オプション> </ 依存>
4.5 RESTサポートを追加します
システム間の多くの方法の呼び出しがあり、安らかは良いものです。春ブーツは簡単にRESTfulなアプリケーションをサポートすることができます。以下のような:
@RestController パブリック クラスUserReditRestController { @RequestMapping(値 = "/ usercredit / {ID}" ) パブリック整数getCreditLevel(@PathVariable文字列ID){ //はシミュレートユーザの信用格付けのID 戻り 3 ; } } //この時点では、アクセス経路でありますhttp://127.0.0.1:8080/usercredit/123番号123は任意です。対応するパラメータのID getCreditLevel。
注:複数のシステムへの相互アクセスの場合は、直接お互いのデータベースにアクセスするが、同様のRESTfulなアーキテクチャであるべきではない、ロジック・インターフェースをカプセル化する最善の方法です。このように、他のシステムデータベースの変更、ビジネス・ロジックの変更やバージョンアップ。これは、他のシステムには影響しません。