SparkFrameworkとSpringBootのHelloWorld比較
軽量なjavaのWebフレームワークのSparkFrameworkと、開発に必要な機能をリッチに提供するSpringBootでHelloWorldプロジェクトを作成し、感じたことを比較してみました。
前提
- spark-core 2.8.0
- Springboot-starter 2.1.2
SparkFrameworkでHelloWorldの手順
- eclipseで「File」 → 「New Gradle Project」から適当な名前でGradleプロジェクトを作成
-
build.gradle
を編集します。
build.gradle
dependencies {
compile 'com.sparkjava:spark-core:2.8.0'
// Sparkのログ出力に必要なライブラリ
compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'
}
- メインクラスを作成します。
SparkApplication
package spark.sample;
import static spark.Spark.get;
/*
* This Java source file was generated by the Gradle 'init' task.
*/
public class SparkApplication {
public static void main(String[] args) {
get("/", (req, res) -> {
return "HelloWorld Spark";
});
}
}
- log4jの設定ファイルを
src/main/resources
に配置
log4j.properties
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
- eclipseで「File」 → 「New Gradle Project」から適当な名前でGradleプロジェクトを作成
-
build.gradle
を編集します。
dependencies {
compile 'com.sparkjava:spark-core:2.8.0'
// Sparkのログ出力に必要なライブラリ
compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'
}
- メインクラスを作成します。
package spark.sample;
import static spark.Spark.get;
/*
* This Java source file was generated by the Gradle 'init' task.
*/
public class SparkApplication {
public static void main(String[] args) {
get("/", (req, res) -> {
return "HelloWorld Spark";
});
}
}
- log4jの設定ファイルを
src/main/resources
に配置
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
以上でSparkでHelloWorldを行う実装は完了です。
mainクラスを実行すると、組み込みのjettyが起動します。
SpringBootでHelloWorldの手順
SpringInitializerで雛形を作成してzipをダウンロードします。
先ほどダウンロードしたzipを展開し、eclipseで「File」 → 「import」 → 「Exisiting Gradle Project」でインポートします。
Controllerクラスを作成します。
SampleController
package spring.sample.sample;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SampleController {
@GetMapping("/")
public String index() {
return "HelloWorld SpringBoot";
}
}
SpringInitializerで雛形を作成してzipをダウンロードします。
先ほどダウンロードしたzipを展開し、eclipseで「File」 → 「import」 → 「Exisiting Gradle Project」でインポートします。
Controllerクラスを作成します。
package spring.sample.sample;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SampleController {
@GetMapping("/")
public String index() {
return "HelloWorld SpringBoot";
}
}
以上でSpringでHelloWorldを行う実装は完了です。
SpringBootAppで実行すると、組み込みのtomcatが起動します。
感想
SparkFrameworkとSpringBootを比較してみて
- SpringBootと比べてのメリット
- 複雑な処理がなければSpringよりも手早く開発が進められそう。
- java8のラムダ記法さえ知ってれば開発が始められる
- 依存モジュールが少なく軽量
- SpringBootと比べてのデメリット
- MVCパターンを強制するなど良い意味でのフレームワークによる強制がないため、好き放題書けるという意味では大規模開発には向かないかも
- エンタープライズWebアプリに必要な機能がフルセットであるわけではないから、そこは自分で実装or技術選定が必要
- 複雑な処理がなければSpringよりも手早く開発が進められそう。
- java8のラムダ記法さえ知ってれば開発が始められる
- 依存モジュールが少なく軽量
- MVCパターンを強制するなど良い意味でのフレームワークによる強制がないため、好き放題書けるという意味では大規模開発には向かないかも
- エンタープライズWebアプリに必要な機能がフルセットであるわけではないから、そこは自分で実装or技術選定が必要
SpringBootで作成したアプリでは、フレームワーク側で作成されるオブジェクトが発生するため、ピュアなjavaで実装したアプリにくらべて処理速度が遅くなってしまうとの話を耳にして、より軽量なWebフレームワークはないかと思って、Sparkフレームワークを見つけて試してみました。
簡単なビジネスロジックを実装してみて、気付きがあれば、また投稿しようと思います。
Author And Source
この問題について(SparkFrameworkとSpringBootのHelloWorld比較), 我々は、より多くの情報をここで見つけました https://qiita.com/soichiro0311/items/eceb5e7d210aebcd6920著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .