ホームページ  >  記事  >  类库下载  >  Spring Boot を使用して Java アプリケーション開発を破壊する

Spring Boot を使用して Java アプリケーション開発を破壊する

高洛峰
高洛峰オリジナル
2016-10-15 09:45:101772ブラウズ

Ava 開発の概要:

Web アプリケーション開発での Java の使用には 20 年近くの歴史があり、オリジナルの Servlet1.0 から非常に多くのフレームワーク、ライブラリ、エコシステム全体へと段階的に進化してきました。これほど長い開発期間を経て、Java は成熟した言語として、非常に成熟したエコシステムへと進化しました。これが、多くの企業が Java をサーバーサイド開発の主流言語として使用している理由であり、Java ユーザーが非常に活発であり続けている理由です。グループ。ただし、このエコシステムは複雑で、非常に単純な Java Web アプリケーションには次のテクノロジーが適用される場合があります:

Spring Boot を使用して Java アプリケーション開発を破壊する

Java 開発は 2 つの陣営に分かれており、1 つは Oracle に代表される Java EE 陣営で、これは Web の公式陣営です。参照標準が開発されました。コアテクノロジーには、サーブレット、EJB、JMS、JSF、JDBC/JPA、JAXB、JAX-WSなどが含まれます。もう 1 つのキャンプは、オープンソース コミュニティと Pivotal に代表される Spring キャンプで、コア テクノロジには Spring Framework、Spring MVC、Spring Data、Spring Security などが含まれます。

Spring は依存関係注入用の Bean コンテナとして始まり、徐々に Java アプリケーション開発の主流フレームワークに発展しました。 Java EE は、その構造が肥大化して複雑で使いにくいため、多くの Java プログラマによって放棄されています。 CDI (Context dependency Injection) は Java EE6 以降に導入されたばかりで、Gavin King らの設計思想は業界のニーズから乖離しているため、Java EE の開発は非常に複雑になっています。 JSF は Java の父である James Gosling によってさえ批判されました。それどころか、Spring コミュニティでは、ますます最新のアプリケーション開発メソッドがさまざまな Spring プロジェクトに統合されています。

Spring Boot とは何ですか?

Spring Boot はコミュニティのフィードバックによって推進されるプロジェクトであり、少なくとも過去 5 年間で Spring、さらには Java コミュニティ全体に最も影響力のあるプロジェクトの 1 つであると言えます。 Spring Boot には主に次の機能が含まれています:

Tomcat、Jetty、または Undertow をサーブレット コンテナとして直接埋め込みます。今後は、アプリケーションを war にパッケージ化してアプリケーション サーバーにアップロードする必要はなくなります。

パッケージ管理に非常に便利なスターター POM を提供し、jar 地獄や依存関係地獄を大幅に軽減します

Spring フレームワークを自動的に構成し、プログラマの時間とエネルギーを大幅に節約し、プログラマがビジネス ロジック コードの作成に集中できるようにしますSpring Boot には、実稼働環境で使用できるプログラム ステータス情報とヘルス ステータスが付属しています。同時に、アプリケーションはコードを自動生成することなく、外部構成情報を非常に簡単に読み取ることができます

。フレームワークを構成するために XML を使用する必要はありません

Spring Boot はなぜ破壊的ですか?

Spring Boot が破壊的である理由は、Java アプリケーション開発のモデルを完全に変えるからです。以前、Spring アプリケーションを開発していたときは、Hibernate と Spring が連携できるようにするにはどのクラスを設定する必要があるか、またどのテンプレートがビュー レイヤーを表示するかを制御するためにビュー リゾルバーを設定する方法を知る必要がありました。多くのコードを書いた後、ビジネス ロジックを 1 行も記述せずに、Spring フレームワーク自体の構成だけを扱っていることに気づくことがよくあります。開発が完了した後も、WebSphere、Weblogic、JBoss などの非常に重いアプリケーション サーバーにデプロイする場合はもちろん、Tomcat や Jetty などの軽量のコンテナにデプロイする場合でも、デプロイメントの問題を考慮する必要があります。コンテナ、設定ファイルの変更方法など。また、複数のアプリケーションが同じ Tomcat にデプロイされると、競合が頻繁に発生します。これらの問題を解決するために多大な労力を費やしたとしても、プログラムが正常にデプロイされた後、プログラムの実行状況を把握することは困難です。アプリケーションがどのように実行されているか、アプリケーションにどのようなパラメータがあるか、および環境変数が何であるかを知るために、多くのサードパーティ ツールを設定する必要がある可能性があります。 Spring は依存関係の注入の問題を解決し、一部の MVC プロセスを簡素化するのに役立ちましたが、Spring フレームワーク自体にはますます多くのものが統合されているため、構成がますます困難になり、メンテナンスコストが急増しています。 Java プログラマーは、Python、Ruby、または JavaScript プログラマーがいくつかのライブラリをインストールするためにいくつかのコマンドを入力し、その後、単に数行のコードを入力し、flask などのフレームワークを導入して、単純な API を直接実行しているのをよく目にします。現時点では、Java プログラマーは、Maven のどのライブラリを使用するか、コード内でどのように構成するかをまだ研究している可能性があります。誰もが頭の中にこんな表現を思い浮かべるのではないでしょうか:

Spring Boot を使用して Java アプリケーション開発を破壊する従来の Spring 開発 vs. Spring Boot アプリケーション開発

次に、具体的な例を通して、従来の Spring アプリケーション開発と Spring Boot アプリケーション開発を比較します。 Hello World REST API を開発する場合、従来の Spring 開発ではこれを行う必要があります。

1. パッケージ管理に Maven を使用する場合は、pom.xml を次のように記述します

Spring Boot を使用して Java アプリケーション開発を破壊する

上記のとおり、単純な hello world REST API を作成するために、Spring Core、Spring Web、Spring Web MVC、Java Servlet、Jackson などの多くのパッケージ依存関係を導入しました。より複雑なプログラムの場合、この pom がどのように見えるか想像できます。 。 。

2. 次のように HelloWorldInitializer クラスを記述します

Spring Boot を使用して Java アプリケーション開発を破壊する

これはすでに非常に単純な Java Config です。Servlet 3.0 より前に XML を使用して Spring を構成していた人は、もう崩壊しているかもしれません。

3. HelloWorldConfiguration クラスを作成します

Spring Boot を使用して Java アプリケーション開発を破壊する

このクラスにはビジネス ロジックが 1 行も含まれていないことに注意してください。 。 。

4. 実際に HelloWorldRestController を書き始める

Spring Boot を使用して Java アプリケーション開発を破壊する

Spring Boot を使用して Java アプリケーション開発を破壊する

私は Web アプリケーション開発に Java を 20 年近く使用してきましたが、元の Servlet1.0 から段階的に進化してきました。現在、非常に多くのフレームワーク、ライブラリ、エコシステム全体に適用されています。これほど長い開発期間を経て、Java は成熟した言語として、非常に成熟したエコシステムへと進化しました。これが、多くの企業が Java をサーバーサイド開発の主流言語として使用している理由であり、Java ユーザーが非常に活発であり続けている理由です。グループ。

著者: プログラマーの自己修養について 出典: Tuiku|2016-10-14 14:16

Collection

Share

Java 開発の概要:

Web アプリケーション開発に Java を使用することは、 20 年の歴史を持ち、オリジナルの Servlet 1.0 から、非常に多くのフレームワーク、ライブラリ、エコシステム全体へと段階的に進化してきました。これほど長い開発期間を経て、Java は成熟した言語として、非常に成熟したエコシステムへと進化しました。これが、多くの企業が Java をサーバーサイド開発の主流言語として使用している理由であり、Java ユーザーが非常に活発であり続けている理由です。グループ。ただし、このエコシステムは複雑で、非常に単純な Java Web アプリケーションには次のテクノロジーが適用される場合があります:

Java 開発は 2 つの陣営に分かれており、1 つは Oracle に代表される Java EE 陣営で、これは Web 開発の公式参照標準です。 。コアテクノロジーには、サーブレット、EJB、JMS、JSF、JDBC/JPA、JAXB、JAX-WSなどが含まれます。もう 1 つのキャンプは、オープンソース コミュニティと Pivotal に代表される Spring キャンプで、コア テクノロジには Spring Framework、Spring MVC、Spring Data、Spring Security などが含まれます。

Spring は依存関係注入用の Bean コンテナとして始まり、徐々に Java アプリケーション開発の主流フレームワークに発展しました。 Java EE は、その構造が肥大化して複雑で使いにくいため、多くの Java プログラマによって放棄されてきました。 CDI (Context dependency Injection) は Java EE6 以降に導入されたばかりで、Gavin King らの設計思想は業界のニーズから乖離しているため、Java EE の開発は非常に複雑になっています。 JSF は Java の父である James Gosling によってさえ批判されました。それどころか、Spring コミュニティでは、ますます最新のアプリケーション開発メソッドがさまざまな Spring プロジェクトに統合されています。

Spring Boot とは何ですか?

Spring Boot は、コミュニティのフィードバックによって推進されるプロジェクトであり、少なくとも過去 5 年間で Spring、さらには Java コミュニティ全体に最も影響力のあるプロジェクトの 1 つであると言えます。 Spring Boot には主に次の機能が含まれています:

Tomcat、Jetty、または Undertow をサーブレット コンテナとして直接埋め込みます。今後は、アプリケーションを war にパッケージ化してアプリケーション サーバーにアップロードする必要はなくなります。

パッケージ管理に非常に便利なスターター POM を提供し、jar 地獄や依存関係地獄を大幅に軽減します

Spring フレームワークを自動的に構成し、プログラマの時間とエネルギーを大幅に節約し、プログラマがビジネス ロジック コードの作成に集中できるようにしますSpring Boot には、実稼働環境で使用できるプログラム ステータス情報とヘルス ステータスが付属しています。同時に、アプリケーションはコードを自動生成することなく、外部構成情報を非常に簡単に読み取ることができます

。フレームワークを構成するために XML を使用する必要はありません

Spring Boot はなぜ破壊的ですか?

Spring Boot はなぜ破壊的なのでしょうか? それは Java アプリケーション開発のモデルを完全に変えるからです。以前、Spring アプリケーションを開発していたときは、Hibernate と Spring が連携できるようにするにはどのクラスを設定する必要があるか、またどのテンプレートがビュー レイヤーを表示するかを制御するためにビュー リゾルバーを設定する方法を知る必要がありました。多くのコードを書いた後、ビジネス ロジックを 1 行も記述せずに、Spring フレームワーク自体の構成だけを扱っていることに気づくことがよくあります。開発が完了した後も、WebSphere、Weblogic、JBoss などの非常に重いアプリケーション サーバーにデプロイする場合はもちろん、Tomcat や Jetty などの軽量のコンテナにデプロイする場合でも、デプロイメントの問題を考慮する必要があります。コンテナ、設定ファイルの変更方法など。また、複数のアプリケーションが同じ Tomcat にデプロイされると、競合が頻繁に発生します。これらの問題を解決するために多大な労力を費やしたとしても、プログラムが正常にデプロイされた後、プログラムの実行状況を把握することは困難です。アプリケーションがどのように実行されているか、アプリケーションにどのようなパラメータがあるか、および環境変数が何であるかを知るために、多くのサードパーティ ツールを設定する必要がある可能性があります。 Spring は依存関係の注入の問題を解決し、一部の MVC プロセスを簡素化するのに役立ちましたが、Spring フレームワーク自体にはますます多くのものが統合されているため、構成がますます困難になり、メンテナンスコストが急増しています。 Java プログラマーは、Python、Ruby、または JavaScript プログラマーがいくつかのライブラリをインストールするためにいくつかのコマンドを入力し、その後、単に数行のコードを入力し、flask などのフレームワークを導入して、単純な API を直接実行しているのをよく目にします。現時点では、Java プログラマーは、Maven のどのライブラリを使用するか、コード内でどのように構成するかをまだ研究している可能性があります。誰もが心の中でこんな表情をしているはずです:

(この時点でJavaプログラマーの心理的影の領域について聞いてください)

Javaプログラマーが誇りを感じる時が来ました!

従来のSpring開発 vs . Spring Boot アプリケーション開発

次に、I 従来の Spring アプリケーション開発と Spring Boot アプリケーション開発を具体的な例を通して比較します。 Hello World REST API を開発する場合、従来の Spring 開発ではこれを行う必要があります

1. パッケージ管理に Maven を使用する場合は、次のように pom.xml を記述します

シンプルな hello world REST API については、Spring Core、Spring Web、Spring Web MVC、Java Servlet、Jackson などの多くのパッケージ依存関係を導入しました。より複雑なプログラムの場合、この pom がどのように見えるか想像できます。 。 。

2. 次のように HelloWorldInitializer クラスを記述します

これは、Servlet 3.0 より前に XML を使用して Spring を構成していた人は、おそらく今は崩壊しているでしょう。

3. HelloWorldConfiguration クラスを作成します

このクラスにはビジネス ロジックが 1 行も含まれていないことに注意してください。 。 。

4. 実際に HelloWorldRestController を書き始めます

5. Tomcat をダウンロードして、Tomcat にデプロイします

7. ようやく Hello World が表示されます...

これはもう疲れたし、もう好きじゃない。 。 。

次に、経験豊富な Java ドライバーが Spring Boot の魅力を体験します。 HelloWorldDemoApplication クラスを SpringBootApplication としてマークすると、Spring Boot は、MVC の構成やパッケージの構成、必要なクラスの挿入、自動的に構成されたクラスの挿入など、このマークに基づいて多くの自動構成をバックグラウンドで実行します。

ここでの main 関数は、アプリケーションのエントリに相当する Java 標準の main 関数です。サーブレット コンテナは起動時にこのエントリを見つけ、Spring コンテナを起動し、初期化を完了します。

3. HelloWorldRestController を作成します
  1. 4. デプロイメントせずにアプリケーションを直接起動しますSpring Boot を使用して Java アプリケーション開発を破壊する

    Spring Boot を使用して Java アプリケーション開発を破壊する

    5. http:// localhost:8080 にアクセスすると、HelloWorld プログラムの前に直接見ることができます。初心者にとっては少なくとも 10 ~ 20 分かかりますが、SpringBoot を使用すれば、長くても 3 分以内に HelloWorld を完了することも夢ではありません。


    概要

    ここでは、SpringBoot について簡単に説明します。SpringBoot には、詳しく説明する価値のあるものがたくさんあります。SpringBoot は、Java 開発をシンプルかつ効率的にするだけでなく、Java 開発に対する私たちの理解を完全に覆してしまいました。初めて、「Java 開発はこうやってできることがわかった」という感覚を持ちます。 SpringBoot を使用すると、Java プログラマはビジネス ロジックにさらに集中し、より機敏な開発を行うことができます。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。