SpringとSpringBootは何が違う?
初めまして、Junior Back-end Developer、SIMOKITAZAWAです。
色々と足りないところがあるかと思いますがよろしくお願い致します。
私がZENNを始めた理由は、
- 勉強したことをまとめたい
- 勉強の内容を共有して一緒に成長したい
- 間違って理解している部分について先輩たちに教えてもらいたい
このような理由で始めることになりました。
たくさんの教えをお願いします。
Spring & Spring Boot
このWebサイトには入って見ると様々なSpring Projectがあります。
Springとは様々なProjectが集まっているものです。また、そのProjectには下位プロジェクトが存在します。
公式ホームページでSpringFrameworkについて説明しています。ここで重要なことは、Javaベースのオブジェクト指向言語の特徴を持ち、開発者がビジネスロジックに集中できるようにするということです。
Springは、ビジネスロジックとエンタープライズテクノロジーを処理するコードを分離します。これにより、開発者はオブジェクト指向の設計に集中できるようになります。
これらの利点を活用するために、開発者はSpringで設定ファイルを適切に調整する必要があります。
SpringBootは簡単に説明するとSpringベースのApplicationを簡単に作ることができます。
Springのどんな点が不便だったのでSpring Bootが開発されたのでしょうか?
Spring Bootが開発された理由
Springの初期はApplicationの開発に必要なオブジェクトを生成し、依存性を提供する役割だけをしていましたが、どんどん多様な技術が追加され、開発者が設定しなければならないものが多くなりました。つまり、複雑で多い設定を手伝うために開発されました。
spring boot starter
Springは開発に必要なモジュールの依存性をそれぞれダウンロードしなければならず、開発者がバージョンを明示しなければならなかったです。その結果、Versionによってモジュールが衝突した場合、再び適切なVersionを見つけて適用する必要がありました。
ここでSpringBootは、spring boot starterで、よく使うモジュール間の依存性とVersionの組み合わせを提供します。
つまり、依存性管理が簡単になり、Versionも一緒に管理してくれるので、開発者が設定に関しては楽になります。
@enableautoconfiguration
このようにDataBaseとConnectionする時に開発者がXMLとかJavaコードで作成しなければならなかったです。
ここでSpringBootを利用すると簡単に設定ができます。作業が減り、開発時間も短縮されます。
これができる理由はなんでしょうか?答えは、@SpringBootApplicationの存在です。
@SpringBootApplicationの内部に入ってみると@ComponentSacnが存在するため、Beanとして登録してくれます。@SpringBootConfigurationはSpringBoot専用のアノテーションで、Springの@Configurationだと考えてください。そして@EnableAutoConfiguration これがSpring Bootが自動設定を担当します。
Embedded WAS jetty、 tomcat、 undertow
SpringFrameworkでApplication開発後に配布するには、WARファイルでパッケージングします。 その後、外部に別途WASを設置します。インストールしたWASにWARファイルをアップロードしないと配布できません。このような複雑で面倒な作業をSpringBootはWASが内蔵されているため、簡単に実行することができ、JAR、WARでパッケージングして配布することができます。
Actuator
SpringBootを使用すると、Applicationをモニタリングすることができます。SpringBootのモジュールの一つであるActuatorは、Applicationの管理とモニタリングをサポートしてくれます。
結論
SpringはSpringFrameworkをベースに様々なサブプロジェクトのコレクションです。サブプロジェクトは複数のモジュールを持っており、開発するApplicationに合わせてモジュールを組み合わせて使用すればいいです。
SpringBootもSpringプロジェクトの一つで、SpringFrameworkなしでは使用できず、Springを楽に使えるようにする役割を果たしています。
SpringBootを使用すると、
- バージョン管理とモジュール管理
- WAS内蔵
- モニタリング
- 自動設定などを行います
利点があります。
Discussion