2014-11-24
はじめてのSpring Boot
先日、こちらの書籍を購入しました。
はじめてのSpring Boot―「Spring Framework」で簡単Java (I/O BOOKS)
- 作者: 槙俊明
- 出版社/メーカー: 工学社
- 発売日: 2014/11
- メディア: 単行本
- この商品を含むブログ (1件) を見る
まだ3分の1程度しか読み終わっていないのですが、面白くてコードを書いてみたくなったので、試しを兼ねてちょっと書いてみました。
なお、元ネタはこちらだったり…。
NetBeansでやってみた「はじめてのSpring Boot」
http://kikutaro777.hatenablog.com/entry/2014/11/20/010828
元ネタといっても、単にコードの元ネタであるだけで、NetBeansは使っていません。Emacsオンリーです。あと、言語がScalaになっています。
完全に趣味です。
で、いくらScalaを使うとはいえ、さすがにsbtではSpring Bootは厳しかろうと思い、今回はMavenにしました。
作成したpom.xml。
*Maven Centralを確認したら、Spring Bootのバージョンが1.1.9になっていたので、上げておきました
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.littlewings</groupId> <artifactId>spring-boot-getting-started</artifactId> <packaging>jar</packaging> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.1.9.RELEASE</version> </parent> <build> <pluginManagement> <plugins> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.0</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.0</version> <configuration> <scalaVersion>${scala.version}</scalaVersion> <args> <arg>-Xlint</arg> <arg>-unchecked</arg> <arg>-deprecation</arg> <arg>-feature</arg> </args> <recompileMode>incremental</recompileMode> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>${scala.version}</version> </dependency> </dependencies> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <scala.version>2.11.4</scala.version> </properties> </project>
MavenのScalaプラグイン、ほとんど触った記憶ないですが(1回くらいあったような…)、最初に
$ mvn scala:compile
したら、「Hello World」的なコードをコンパイルしようとしたら、各種ダウンロードやらもろもろの処理やら、PCの貧弱さもあって5分くらいかかって、えーって感じでした…。
以降は、改善されましたけど。
それから、作成したソースコード。
src/main/scala/org/littlewings/springboot/App.scala
package org.littlewings.springboot import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.EnableAutoConfiguration import org.springframework.web.bind.annotation.{ RequestMapping, RestController } object App { def main(args: Array[String]): Unit = SpringApplication.run(classOf[App]) } @RestController @EnableAutoConfiguration class App { @RequestMapping(Array("/")) def home: String = "Hello, World!" }
とりあえず、実行にはコンパイルも一緒にこんな感じでやっていました。
$ mvn scala:compile spring-boot:run
バナー。
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.1.9.RELEASE)
起動後、確認。
$ curl http://localhost:8080/ Hello, World!
おお、動いてますね。
1度止めて、パッケージング。
$ mvn package
できあがったJARファイルを実行。
$ java -jar target/spring-boot-getting-started-0.0.1-SNAPSHOT.jar
起動後、確認。
$ curl http://localhost:8080/ Hello, World!
OKです!
- 76 https://www.google.co.jp/
- 18 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CB0QFjAA&url=http://d.hatena.ne.jp/Kazuhira/20131201/1385900824&ei=SPxyVOesDeOsmAWO5IL4Cg&usg=AFQjCNENrg42K6MkgVU6Tl7TN9afsUOhog&sig2=XcQFY23BiYvxC_VkmAuG8w&bvm=bv.80185997,
- 14 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0CC0QFjAC&url=http://d.hatena.ne.jp/Kazuhira/20131026/1382796711&ei=w_5yVNP9H8nZ8gX9tIBQ&usg=AFQjCNH4Zin4EPWjd3Acf0lIqpvWuSdLSQ&bvm=bv.80185997,d.dGc
- 13 http://t.co/97ccZo8akH
- 10 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCoQFjAB&url=http://d.hatena.ne.jp/Kazuhira/20131201/1385900824&ei=Uv1yVJroNoG78gXHr4LAAQ&usg=AFQjCNENrg42K6MkgVU6Tl7TN9afsUOhog
- 7 http://t.co/LOxU2el6Cb
- 6 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CDcQFjAD&url=http://d.hatena.ne.jp/Kazuhira/20120828/1346149341&ei=YgNzVOTtAs7m8AWfo4L4Dg&usg=AFQjCNEmLp5qW1zXHBeu1_e27DiOTuLxTA&sig2=gUr7T3QGs7yywkrWn1lybQ&bvm=bv.80185997,
- 5 http://d.hatena.ne.jp/zyake_mk2/20141118/1416319538
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&ved=0CEEQFjAF&url=http://d.hatena.ne.jp/Kazuhira/20120109/1326099950&ei=NgdzVKL-Oczf8AWNyIKwBw&usg=AFQjCNFwecEpE624m2_7lQR0wYolOkNyjQ&sig2=S27pIadkwR7Rxj-6199pcw&bvm=bv.80185997,
- 4 https://www.google.com/