先日、こちらの書籍を購入しました。
はじめてのSpring Boot―「Spring Framework」で簡単Javaアプリ開発 (I・O BOOKS)
- 作者: 槇俊明
- 出版社/メーカー: 工学社
- 発売日: 2014/11/01
- メディア: 単行本
- この商品を含むブログ (8件) を見る
まだ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> <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> <build> <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> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> <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> <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分くらいかかって、えーって感じでした…。
以降は、改善されましたけど。
2014/11/26 追記)
@makingさんのツッコミと設定の見直しで、「scala:compile」でなく「compile」でScalaコードがコンパイルできるようにpom.xmlを見直しました。
それから、作成したソースコード。
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], args: _*) } @RestController @EnableAutoConfiguration class App { @RequestMapping(Array("/")) def home: String = "Hello, World!" }
とりあえず、実行はこんな感じで。
$ mvn 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です!