くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

SpringBootのプロジェクトをはじめるときにやる5つのこと

SpringBootでWebアプリを作るときにいつもやることを忘れないようにφ(..)メモメモ

開発環境はEclipse4.5+Windows10+Gradle+Git

おしながき

  1. Spring Initializrでひな形プロジェクトを作成
  2. .gitignoreの設定
  3. build.gradleの設定
  4. application.propertiesの設定
  5. パッケージ構成の設定

Spring Initializrでひな形プロジェクトを作成

まずは、Eclipseプロジェクトを作成。

なんと、Springのひな形を作る便利なWebサービスSpring Initializr」があるので、それを使って作成

設定はこんな感じ。

f:id:wannabe-jellyfish:20160508120559p:plain

右側のDependencyで必要なライブラリを追加しておく。

好きな構成は、Web+Thymeleaf+JPA(+Security)。初期開発ではインメモリDBのH2を使う。

注意 上のほうにある「Maven Project」を「Gradle Project」に変更することを忘れない!!

「Generate Project」ボタンを押すと、Gradleプロジェクトのzipファイルをダウンロードできます

あとは、zipファイルを展開して、EclipseでGradleプロジェクトのインポートをすればOK

f:id:wannabe-jellyfish:20160508130151p:plain

.gitignoreの設定

ソースコードはGitで管理するので、.gitignoreを追加。.gitignoreの作成は、もちろんgibo

giboすてき、gibo

github.com

$ gibo Java Eclipse Gradle > .gitignore

作成した.gitignoreはこちらのGistに .gitignore Eclipse Java Gradle: generated by gibo · GitHub

build.gradleの設定

次のbuild.gradleの編集。よく使うライブラリをdependenciesに追加する

最終的にはこんな感じ。

dependencies {
  //Spring Initializrで設定された依存関係
  compile('org.springframework.boot:spring-boot-starter-data-jpa')
  compile('org.springframework.boot:spring-boot-starter-security')
  compile('org.springframework.boot:spring-boot-starter-thymeleaf')
  compile('org.springframework.boot:spring-boot-starter-web')
  runtime('com.h2database:h2')
  testCompile('org.springframework.boot:spring-boot-starter-test')

  //ThymeleafでSpring Securityの機能を使うために追加
  compile('org.thymeleaf.extras:thymeleaf-extras-springsecurity4')

  //よく使うライブラリたち
  compile 'org.projectlombok:lombok:1.16.8'
  compile 'org.apache.commons:commons-csv:1.2'
  compile 'org.apache.commons:commons-lang3:3.4'
  compile 'org.apache.commons:commons-io:1.3.2'
  compile 'org.apache.commons:commons-collections4:4.1'

  //SpringでDBUnitを楽に使うためのライブラリ
  testCompile 'com.github.springtestdbunit:spring-test-dbunit:1.3.0'
}

application.propertiesの設定

application.propertiesを追加。だいたいよく使うのは同じなので、あらかじめ用意しておく。

以下のサイトにまとまっているので、必要に応じて追加・修正 Appendix A. Common application properties

よく使う設定をまとめたapplication.propertiesはこちらのGistに application.properties template for Spring Boot · GitHub

パッケージ構成の設定

いつも使う設計や構成はだいたい決まっているので、ひな形を作っておく。

個人的に好きな構成は以下の通り

├─ src/main/java
│   └─ com.example
│        ├─ app                              ... アプリケーション層のパッケージ
│        │   ├─ foo
│        │   │   └─ FooController.java
│        │   ├─ ErrorPageController.java
│        │   └─ GlobalExceptionHandler.java
│        ├─ domain                           ... ドメイン層のパッケージ
│        │   ├─ model
│        │   │   └─ BarEntity.java
│        │   ├─ repository
│        │   │   └─ BarRepository.java
│        │   └─ service
│        │        └─ FooService.java
│        ├─ utils                            ... 共通で使うUtilityのパッケージ
│        │   └─ Utils.java
│        ├─ DemoApplication.java             ... SpringBootServletInitializerの具象クラス
│        └─ WebSecurityConfig.java           ... WebSecurityConfigurerAdapterの具象クラス
└─ src/main/resources
     ├─ templates                             ... Thymeleafのテンプレート
     │   ├─ foo
     │   │   └─ index.html
     │   ├─ common                           ... 共通UIパーツ
     │   │   └─ header.html
     │   └─ error                            ... エラーページ
     │        ├─ 403.html
     │        ├─ 404.html
     │        └─ 500.html
     ├─ static
     │   ├─ dist                             ... 3rd-partyのjs/css
     │   │   └─ bootstrap
     │   ├─ css
     │   ├─ fonts
     │   └─ js
     └─ application.properties

これで一通りの準備が完了!!

参考になる書籍

Spring Boot 2 プログラミング入門

Spring Boot 2 プログラミング入門

参考にしたサイト様