際際滷

際際滷Share a Scribd company logo
はじめてのSpring Boot
アジェンダ
? はじめに
? 
? Mavenプロジェクトの恬撹
? Hello world !
? まとめ
はじめに
? Spring Bootを聞って
gなWebシステムBをg處する

? ここでやること
Spring Bootのg佩h廠のJavaと、
ビルドツ`ルのMavenをインスト`ルする。

? Javaのインスト`ル
http://www.oracle.com/technetwork/java/javase/downloads/index.html
參週の返ではJava SE 8u45を
仝C:Program FilesJavajdk1.8.0_45々にインスト`ルしたものとする。
和URLからインスト`ラ`をダウンロ`ドしてインスト`ルする。

? パスO協
コンピュ`タのプロパティから仝システムのO協々をxんで、
和h廠篳を鞠hする。
Aいて屡贋のh廠篳の挑硫に和を原け紗える。
┘僖垢稜俳り猟忖のセミコロンも根めて原け紗える
篳兆 ★ JAVA_HOME
篳 ★ C:Program FilesJavajdk1.8.0_45
篳兆 ★ Path
篳 ★ ;"%JAVA_HOME%bin"

? Mavenのインスト`ル
和ZIPファイルをダウンロ`ドし盾する。
http://archive.apache.org/dist/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.zip
參週の返では仝D:apache-maven-3.2.3々に盾したものとする。

? パスO協
コンピュ`タのプロパティから仝システムのO協々をxんで、
和h廠篳を鞠hする。
Aいて屡贋のh廠篳の挑硫に和を原け紗える。
┘僖垢稜俳り猟忖のセミコロンも根めて原け紗える
篳兆 ★ MAVEN_HOME
篳 ★ D:apache-maven-3.2.3
篳兆 ★ Path
篳 ★ ;"%MAVEN_HOME%bin"

? プロキシO協
Mavenはビルドに駅勣なライブラリがロ`カルにない栽、
ネットワ`クU喇で徭啜弔縫瀬Ε鵐踪`ドするので
プロキシのO協が駅勣になる。
インスト`ルフォルダの仝conf々フォルダにある
仝settings.xml々をテキストエディタで_いて、
<proxies>タグ坪に和を弖する。
<proxy>
<active>true</active>
<protocol>http</protocol>
<host>xxx.xxx.xxx.xxx</host>
<port>nnn</port>
</proxy>

? _J
コマンドプロンプトを_いて、インスト`ルが竃栖たか_Jする。
Javaがインスト`ルできたか、javaコマンドを聞って_Jする。
Mavenがインスト`ルできたか、mvnコマンドを聞って_Jする。
# java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode, sharing)
# mvn -version
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-
12T05:58:10+09:00)
Maven home: D:apache-maven-3.2.3bin..
Java version: 1.8.0_45, vendor: Oracle Corporation
Java home: C:Program FilesJavajdk1.8.0_45jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 7", version: "6.1", arch: "x86", family: "dos"
Mavenプロジェクトの恬撹
? ここでやること
Mavenを聞って腎のプロジェクトを恬撹し、
Spring Bootの卆贋vSの弖紗と
Webサ`バが軟咾垢襪泙任魎_Jする。
Mavenプロジェクトの恬撹
? 腎のプロジェクトを恬撹
コマンドプロンプトを_いてm輝なフォルダに卞咾掘
和コマンドをg佩して腎のMavenプロジェクトを恬撹する。
參週の返では仝C:Work々でg佩した栽。
iみやすく個佩しているが、gHは1佩で峰する。
これは云栖Eclipse吉のIDEで佩うことなのでえる駅勣はな
い。
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.945 s
[INFO] Finished at: 2015-09-16T12:55:03+09:00
[INFO] Final Memory: 11M/32M
[INFO] ------------------------------------------------------------------------
mvn archetype:generate
-DgroupId=com.kubota.myfirstspringboot
-DartifactId=MyFirstSpringBoot
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
兜指のg佩はダウンロ`ドが謹くk伏するが、
恷瘁の仝BUILD SUCCESS々が竃薦されればプロジェクト恬撹撹孔。
Mavenプロジェクトの恬撹
? フォルダ撹
腎のプロジェクトを恬撹した岷瘁は、
和のようなフォルダ撹とファイルが恬撹される。
# tree /F
C:.
 pom.xml

県src
制main
 県java
 県com
 県kubota
 県myfirstspringboot
 App.java

県test
県java
県com
県kubota
県myfirstspringboot
AppTest.java
*pom.xml
プロジェクトの協xファイ
ル
*App.java
徭喇撹されたソ`ス
*AppTest.java
徭喇撹されたUT喘ソ`ス
Mavenプロジェクトの恬撹
? ビルドとg佩
この兜豚彜Bでビルドとg佩をしてみる。
まずはMyFirstSpringBootフォルダに卞咾靴謄咼襯鼻
# cd MyFirstSpringBoot
# mvn package
[INFO] Scanning for projects...
゛゛゛ 嶄待 ゛゛゛
[INFO] Building jar: C:WorkMyFirstSpringBoottargetMyFirstSpringBoot-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.195 s
[INFO] Finished at: 2015-09-16T13:35:02+09:00
[INFO] Final Memory: 13M/31M
[INFO] ------------------------------------------------------------------------
Warningが竃るが、仝BUILD SUCCESS々と竃薦されればビルド撹孔。
Mavenプロジェクトの恬撹
? ビルドとg佩
Aいてg佩をする。
targetフォルダ坪にJARファイルが恬撹されるので、
それをクラスパスに峺協してg佩する。
# java -classpath targetMyFirstSpringBoot-1.0-SNAPSHOT.jar
com.kubota.myfirstspringboot.App
Hello World!
徭喇撹されたAppクラスがg佩されれば撹孔。
Mavenプロジェクトの恬撹
? プロジェクトの協xファイルpom.xmlを俐屎
Mavenのセントラルリポジトリの協xを峺協する。
<project
゛゛゛ 嶄待 ゛゛゛
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>central</id>
<url>http://central.maven.org/maven2/</url>
</repository>
</repositories>
<dependencies>
゛゛゛ 嶄待 ゛゛゛
</project>
<dependencies>タグの貧に
<repositories>タグを弖紗
Mavenプロジェクトの恬撹
? プロジェクトの協xファイルpom.xmlを俐屎
このプロジェクト協xのHの協xをSpring Bootのものに崔きQえる。
<project
゛゛゛ 嶄待 ゛゛゛
</repositories>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.5.RELEASE</version>
</parent>
<dependencies>
゛゛゛ 嶄待 ゛゛゛
</project>
<repositories>タグの和に
<parent>タグを弖紗
Mavenプロジェクトの恬撹
? プロジェクトの協xファイルpom.xmlを俐屎
Spring Bootの卆贋vSを弖。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencies>タグの嶄に
<dependency>タグを弖紗
Mavenプロジェクトの恬撹
? プロジェクトの協xファイルpom.xmlを俐屎
Spring Bootのビルドプラグインを弖。
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
<dependencies>タグの和に
<build>タグを弖紗
Mavenプロジェクトの恬撹
? プログラム App.java を俐屎
音勣なコ`ドを茅。
package com.kubota.myfirstspringboot;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
コメントを茅
Hello World! を茅
ブロックの_兵了崔を俐屎
Mavenプロジェクトの恬撹
? プログラム App.java を俐屎
Spring Bootが軟咾垢襪茲Αmainメソッドを俐屎。
package com.kubota.myfirstspringboot;
public class App {
public static void main( String[] args ) {
SpringApplication.run(App.class, args);
}
}
Mainメソッド坪でSpring Bootを軟咾垢
Mavenプロジェクトの恬撹
? プログラム App.java を俐屎
Spring Bootに駅勣なアノテ`ションとインポ`トを弖。
package com.kubota.myfirstspringboot;
import org.springframework.stereotype.Controller;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.boot.SpringApplication;
@Controller
@EnableAutoConfiguration
@ComponentScan
public class App {
public static void main( String[] args ) {
SpringApplication.run(App.class, args);
}
}
Spring Bootに駅勣なアノテ`ション
Mavenプロジェクトの恬撹
? ビルドとg佩
ビルドする。
プロジェクトの協xを俐屎したので、
恷兜は弼?とダウンロ`ドが恠る。
# mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MyFirstSpringBoot 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
゛゛゛嶄待゛゛゛
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.894 s
[INFO] Finished at: 2015-09-16T14:21:08+09:00
[INFO] Final Memory: 17M/42M
[INFO] ------------------------------------------------------------------------
仝BUILD SUCCESS々と竃薦されればビルド撹孔。
Mavenプロジェクトの恬撹
? ビルドとg佩
g佩する。
g佩というか、Spring Bootの軟咾鯰个Α
# mvn spring-boot:run
゛゛゛嶄待゛゛゛
. ____ _ __ _ _
/ / ___'_ __ _ _(_)_ __ __ _    
( ( )___ | '_ | '_| | '_ / _` |    
/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |___, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.1.5.RELEASE)
晩云Zh廠だとバックスラッシュがぅ洫`クとなるが、
仝Spring々と竃薦されれば軟啌氷Α
Webサ`バが軟咾垢襪里如Ctrl+CでK阻する。
ここまででSpring Bootの児云議なh廠が竃栖た。
Hello world !
? ここでやること
Spring Bootで兜iの兜iなWebアプリを恬撹する。
Hello world !
? プロジェクトの協xファイルpom.xmlを俐屎
テンプレ`トエンジンの卆贋vSを弖。
<dependencies>
゛゛゛ 嶄待 ゛゛゛
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<dependencies>タグ坪に
テンプレ`トエンジンのタグを弖紗
Hello world !
? リクエストコントロ`ラHello.javaを弖紗
App.javaと揖じ侭にリクエストコントロ`ラを弖する。
これがHTTPリクエストのハンドリングを佩う。
package com.kubota.myfirstspringboot;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("hello")
public class Hello {
@RequestMapping(method=RequestMethod.GET)
public String sayHello() {
return "helloworld";
}
}
http://localhost:8080/hello
をハンドリングすることを傚冱
GETメソッドをI尖することを傚冱
テンプレ`ト仝helloworld々を柵ぶ
Hello world !
? テンプレ`ト helloworld.html を弖紗
コントロ`ラから柵び竃されて、HTMLを伏撹するのがテンプ
レ`ト。
テンプレ`トは和の侭に崔く。
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello world!
</body>
</html>
テンプレ`トエンジン
仝thymeleaf々を聞う傚冱
srcmainresourcestemplates
Hello world !
? ビルドとg佩
ビルドする。
# mvn package
[INFO] Scanning for projects...
゛゛゛嶄待゛゛゛
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
AいてSpring Bootを軟咾垢襦
# mvn spring-boot:run
[INFO] Scanning for projects...
[INFO]
゛゛゛嶄待゛゛゛
. ____ _ __ _ _
/ / ___'_ __ _ _(_)_ __ __ _    
( ( )___ | '_ | '_| | '_ / _` |    
/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |___, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.1.5.RELEASE)
Hello world !
? ブラウザでアクセス
ブラウザを羨ち貧げて、和URLにアクセスする。
http://localhost:8080/hello
參和のようなペ`ジが燕幣されれば撹孔。
Hello world !
? I尖の送れ
1.ブラウザがサ`バにリクエストを僕佚する。
2.サ`バがURL仝hello々をI尖するコントロ`ラを柵び竃す。
@Controller
@RequestMapping("hello")
public class Hello {
@RequestMapping(method=RequestMethod.GET)
public String sayHello() {
3.コントロ`ラがリクエストY惚を燕幣するテンプレ`トを卦す。
return "helloworld";
4.テンプレ`トhelloworld.htmlがHTMLを卦す。
<body> Hello world! </body>
5.ブラウザがHTMLを燕幣する。
まとめ
ここまでがSpring Bootを聞ったシステムBのほんの秘笥で、
この枠にはビジネスロジックと喟A晒咾ある。
HTTPリクエスト
コントロ`ラ
ビジネスロジック
デ`タ喟A晒
DB
Spring Boot Core
Spring Data JPA
テクノロジA咼皀妊

More Related Content

はじめてのSpring Boot