Spring Bootで高速アプリ開発
Spring Bootとは
いまから10年以上前、Spring frameworkは巨大化したJ2EEへのアンチテーゼとして登場し、 DIやAOPといった、当時の最新技術をもってWebアプリ開発に必要な機能を提供してくれました。 ※Spring frameworkについてはこのへん参照
Webアプリ開発において革新をもたらしたSpringでしたが、時間が経つにつれSpring frameworkまわりの さまざまなプロダクトが登場し、J2EE以上に肥大化していきました。 そこで最近登場したのが、今回紹介するSpring Bootです。
Spring Bootは「コードを全く生成することなく、XML構成ファイルなしで本番環境で利用できる Springベースのアプリを作成し、すぐに実行できるようにすること」とのことです。 開発者がSpring Bootを使用することで、「Springプラットフォームのコンポーネントを通じ、 Spring Bootが提供する機能によって開発生産性が劇的に向上する」と、Spring Bootチームの人も言ってます。
以前、アプリのビルド時に依存するライブラリをすべて1つのjarにパッケージングして 実行は組み込みのjettyで行う、Dropwizardというフレームワークを紹介しました。 簡単にいうと、Spring BootはこれのSpring版といった感じです。 ではセットアップからサンプルプロジェクトの動作確認までをやってみましょう。
セットアップ
今回使用した動作環境は以下のとおり。 本記事ではMavenを使用しますが、Gradleでもかまいません。
- OS : MacOS X 10.9.2
- Apache Maven : 3.2.1
- Java : 1.7.0_45
Spring Bootプロジェクトの作成
ではSpring Bootを使ったプロジェクトを作成します。 まずはMavenでプロジェクトのひな形を作成。
% mvn archetype:create -DgroupId=jp.cm.springBootSample -DartifactId=springBootSample
生成されたpom.xmlでSpring Bootに関連する依存ファイルを追加します。 「追記」とかかれた部分をpom.xmlに記述してください。
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jp.cm.springbootsample</groupId> <artifactId>springBootSample</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>springBootSample</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- 追記 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.0.2.RELEASE</version> </parent> <!-- 追記 --> <dependencies> <!-- 追記 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 追記 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
次に、ソースディレクトリにクラスを追加します。 src/main/java/jp/cm/springbootsample/serviceディレクトリを作成し、 そこに HelloWorldService.javaファイルを下記内容で作成します。 このクラスは、このあと作成するコントローラクラスから呼ばれるサービスクラスです。
package jp.cm.springbootsample.service; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class HelloWorldService { @Value("${name:World}") private String name; public String getHelloMessage() { return "Hello " + this.name; } }
次にコントローラを作成します。このクラスではAutowiredアノテーションを使用して 先ほどのサービスクラスをDIしています。 また、RequestMappingアノテーションで、HTTPリクエストをうけた場合の処理を定義しています。
package jp.cm.springbootsample; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import jp.cm.springbootsample.service.HelloWorldService; @Controller @EnableAutoConfiguration @ComponentScan public class HelloController { @Autowired private HelloWorldService helloWorldService; @RequestMapping("/") @ResponseBody public String home() { return helloWorldService.getHelloMessage(); } public static void main(String[] arguments) { SpringApplication.run(HelloController.class, arguments); } }
ソースができたらビルドしましょう。packageコマンドでパッケージングし、 spring-boot:runコマンドで実行します。
% mnv package % mvn spring-boot:run ・ ・
アプリが起動したらlocalhost:8080にブラウザでアクセスしてみてください。 HelloControllerのhomeメソッドが実行され、レスポンスが返ります。
これでもいいのですが、このままではDropWizardのようにjarを直接実行することはできないので、 直接jarを実行できるようにしてみます。pom.xmlに次の「追記」部分を記述してください。
・ ・ </dependencies> <!-- 追記 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>jp.cm.springbootsample.HelloController</mainClass> </configuration> </plugin> </plugins> </build> <!-- 追記 --> </project>
上記のようにpom.xmlを修正したら、再度パッケージングしてjarコマンドで実行してみます。 さきほどと同じように動作することがわかります。
% mvn package % java -jar target/springBootSample-1.0-SNAPSHOT.jar
まとめ
今回はSpring Bootを使用して簡単なサンプルプロジェクトをつくってみました。 設定ファイルなしでSpringを使用したアプリが簡単に作成できたと思います。 なお、Spring Dataを使用したDBアクセスも簡単に使用することができるので、このへんを確認してみてください。
参考サイトなど
- Spring boot公式: http://projects.spring.io/spring-boot/
- Github: https://github.com/spring-projects/spring-boot