はじめに
エンジニアに転職してから1年半が経とうとしているのでそろそろ、JavaとSpringBootで基本的なアプリ開発ができるようにならないといけないと思い始めました。現在使用している参考書はSpring Boot 2 プログラミング入門です。まだ全て手を動かしながら実践できていませんが簡易的なアプリを作成するまではできたので纏めておきます。ところどころ自分オリジナルのコードも入れながら作成したので良い勉強になりました。何回かに分けて復習がてら書いていきたいと思います。
github: https://github.com/noydmt/myboot
まず使用したツールやFWの説明から。
Gradle
Groovy
によるビルドツール。
ビルドの情報や処理はGroovy
で記述されている。Groovy
とはプログラミング言語の一種でJava
を踏襲した文法で書くことができ、アプリも作れる。使用用途としてはGradle
の記述以外にも本格的なアプリ開発の前のプロトタイプを作るときに用いられることが多い。
maven
と違い、pom.xml
は使用せず、プロジェクトの中にbuild.gradle
ファイルを置いて環境を管理する。
STSでプロジェクト作成を行うときは予め、gradle専用のプラグインツールをインストールしておく必要があり、STSで始めることが多いと思われるのでヘルプ
=>Eclipseマーケットプレイス
=>「Buildship」で検索
=>Buildship gradle integration
をインストールすることでgradleプロジェクトを作成可能。
Thymeleaf
Java用に作られたテンプレートライブラリ。SpringBootにデフォルトで組み込まれている為、特にライブラリ等をインストールする必要はなし。JSPと違ってHTMLに影響を及ぼさないth
や${}
などを用いて画面を表示することが可能。正直個人的な感想では今更、テンプレートエンジンを学ぶ旨味もそこまでないような気がする。
SpringBoot
Spring
フレームワークを基にさらに拡張されたJavaフレームワーク。railsライクに高速開発できることが強み。
Spring framework
同様にDIが兼ね備えられており、わざわざ依存クラス内で使いたいクラスのインスタンスを生成する必要がない。AOP
については調べたけどよくわからない。
続いては実際にアプリ開発で使用した環境を紹介していきます。
build.gradle
plugins {
id 'org.springframework.boot' version '2.3.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'com.gradle.springboot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.hsqldb:hsqldb')
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
中身をざっと見てみるとplugins
とrepositories
、dependencies
がこのファイルの構成要素になっており、plugins
ではJava
やspringBoot
、dependency
などの使用言語や使うフレームワーク、管理ツール、バージョンなど管理されている。
バージョンによって使える機能が限られることがあるので注意。
とは言いても個人の開発者がよりいじる可能性があるのはdependencies
である。
このdependencies
ではどんなライブラリを使いたいか予め記述するだけでビルド時に勝手にダウンロードをしてくれる。
build.gradle
を使わないと使いたいライブラリがあった場合、のちに外部からjarファイルをダウンロードしてクラスパスを通さないと使えなかったがgradle
はそんな手間を掛けずにライブラリを使用することができるのだ。
今回私が使用したライブラリは下記になる。
・SpringBoot
・thymeleaf
・HSQLDB
・JPA
HSQLDBはJavaアプリケーション内部にDBを内蔵することを可能にするもので本来のサーバー上でなくメモリ上にデータベースを保管することができる。開発段階のテスト用データベースとして使用されることが多い。メモリ上に保管する為、揮発性を持ち、一度保管したレコードはアプリケーションを再起動すると消えてしまう。
JPAとはエンティティクラスを利用してRDBのテーブル操作をもっと簡易的に実現できるORマッパー。
次回に続く。。。