Web系開発メモ

Java, JavaScript, CSS, HTML などの記事を書いています。

SpringBoot

SpringBoot:記事の一覧

この記事には、Spring Boot の記事のリンクをまとめています。 入門 基本的な使い方(Web層, DBアクセス, 等々)を書いています。 SpringBoot 入門:目次 アプリ開発 Webアプリをつくる方法を書いています。 SpringBoot アプリ開発:目次 上記以外(エラー対…

SpringBoot アプリ開発:目次

Spring Boot を使って、Webアプリをつくる記事を書いてみました。以下の目次順に読んで頂けると、画面とDBアクセスのあるアプリをつくることができます。 ※ アプリの詳細(機能や画面など)は「1.概要」に書いてあります。 目次 概要 環境準備 プロジェク…

SpringBoot アプリ開発:1.概要

記事「SpringBoot アプリ開発」で開発するアプリの概要を書いていきます。 機能 短いテキスト「つぶやき」の、作成・表示・更新・削除(CRUD)ができるアプリです。 画面(HTML, JS, CSS) つぶやきの CRUD ができるレスポンシブな画面を、Bootstrap, jQuery…

SpringBoot入門:MessageSource を使う

Spring の MessageSource を使うと、メッセージをプロパティファイルから簡単に取得できます。これから、Spring Boot で MessageSource を使う手順を書いていこうと思います。 手順1. application.properties の設定 次のように設定すると、メッセージを mes…

SpringBoot入門:目次

この記事には、SpringBoot 入門記事のリンクをまとめています。 入門記事は、タスクベース(あれをしたい、これを使いたい)で書いています。SpringBoot で Webアプリを作ってみたい場合は、Spring Boot アプリ開発 を参考にして頂けると嬉しいです。 1. Web…

SpringBoot入門:Mustacheを使う

Spring Boot の Webアプリで、テンプレートエンジンの Mustache を使う方法を書いてみようと思います。Mustache で HTML をレンダリングして、レスポンスとして返してみます。 前提 この記事は、入門記事「JSONを返す」の資源(ビルドファイル、クラス等)を…

SpringBoot:MavenでJavaバージョンを指定

Spring Boot を使っている場合、Maven のプロパティ java.version で、Java バージョンを指定することができます。 <properties> <java.version>1.8</java.version> </properties> ただ、他のアプリでも java.version を使いそうな気がしてきます。 そこで、Spring Boot を使っていても、下のように他のプロジェクト…

SpringBoot入門:mockitoで単体テスト

Spring Boot の Webアプリで、mockito を使って単体テストをする方法を書きます。今回は、リポジトリクラスのモックを用意して、DB にアクセスせずにテストしてみます。 前提(テスト対象) 記事「JPAでデータアクセス」で作成したコントローラのメソッド cr…

SpringBoot入門:トランザクションの管理

Spring Boot の Webアプリで、RDB のトランザクションを管理する方法を書きます。Spring Framework の アノテーション @Transactional を使って管理します。 前提 この記事は、記事「JPAでデータアクセス」の資源(ビルドファイル、クラス等)を利用していま…

SpringBoot入門:JPAでデータアクセス

SpringBoot の Webアプリで、JPA を使う方法を書いていきます。JPA を使うと、SQL を書かずにデータを操作することができます。 前提 この記事は「FlywayでDBマイグレーション」の環境(JDK, PostgreSQL等)や資源(ビルドファイル, クラス, テーブル等)を…

SpringBoot入門:JDBCでデータアクセス

SpringBoot の Webアプリで、JDBC 機能を使う方法を書いていきます。プログラム内に SQL(insert, select など)を書いてデータを操作します。 前提 この記事は「FlywayでDBマイグレーション」の環境(JDK, PostgreSQL等)や資源(ビルドファイル, クラス, …

SpringBoot入門:FlywayでDBマイグレーション

Flyway は、SQLベースのDBマイグレーションツールです。DBマイグレーションとは、DBのデータを残したまま、テーブル作成やカラム変更等をすることです。 SpringBoot のアプリで Flyway を使うと、起動時にマイグレーション用のSQLが実行されるようになります…

SpringBoot:MongoDBにアクセス

SpringBoot の Webアプリから、MongoDB にアクセスする方法を書きます。データ(≒ドキュメント, JSON)を登録したり、検索したりしてみます。 環境・ツール JDK 1.8 以上 Maven 3.0 以上(or Gradle 等) MongoDB(執筆時 3.4.2) 手順1. ビルドファイルの作…

SpringBoot入門:アプリの管理やモニタリング

Spring Boot の Webアプリを、HTTP経由で管理したり、モニタリングする方法を書きます。今回は、Spring Boot の Actuator という機能を使います。 前提 この記事は、入門記事「JSONを返す」の資源(ビルドファイル、クラス等)を利用しています。必要に応じ…

SpringBoot入門:静的コンテンツを返す

Spring Boot の Webアプリで、サーバサイドから静的コンテンツ(html, js, css, png, etc)を返却する方法を書いていきます。 前提 この記事は、入門記事「JSONを返す」の資源(ビルドファイル、クラス等)を利用しています。必要に応じて参照して頂けると嬉…

SpringBoot入門:アプリのjar作成

Spring Boot の Webアプリを、jar 形式でパッケージングして起動する方法を書きます。 前提 この記事は、入門記事「JSONを返す」の資源(ビルドファイル、クラス等)を利用しています。必要に応じて参照して頂けると嬉しいです。 手順1. jar の作成 Maven の…

SpringBoot入門:タスクのスケジューリング

Spring Boot のスケジューリング機能を使って、一定間隔で処理を実行する方法を書きます。 前提 この記事は、入門記事「JSONを返す」の資源(ビルドファイル、クラス等)を利用しています。必要に応じて参照して頂けると嬉しいです。 手順1. タスクの作成・…

SpringBoot:外部のサービスに接続

Spring Boot の Web アプリ(サーバサイドの Java)から、外部のサービスに接続する方法を書きます。 今回は、Spring Boot が提供するサービス http://gturnquist-quoters.cfapps.io/api/random に接続して、JSON を取得してみます。JSON の内容は、次のよう…

SpringBoot入門:サービスクラスを使う

Spring Boot の Webアプリで、サービスクラスを使う方法を書きます。サービスクラスは「ドメイン駆動設計 - Wikipedia」に登場するオブジェクトで、なんらかの処理(機能)を実装するものです。 前提 この記事は、入門記事「JSONを返す」の資源(ビルドファ…

SpringBoot入門:ファイルアップロード

Spring Boot の Webアプリで、ファイルアップロードを受け付ける方法を書きます。手順としては、次の資源を作成していきます。 アップロードを受け付けるコントローラ アップロードする画面 前提 この記事は、入門記事「JSONを返す」の資源(ビルドファイル…

SpringBoot入門:jQueryでJSONを受信

Spring Boot の Webアプリで、jQuery を使って JSON を受け取る方法を書きます。JSON は、記事「JSONを返す」のコントローラから取得します。 前提 この記事は、入門記事「JSONを返す」の資源(ビルドファイル、クラス等)を利用しています。必要に応じて参…

SpringBoot入門:JSONを返す

Spring Boot を使って、サーバサイドから JSON を返却する方法を紹介します。 次の URL にリクエストすると、 http://localhost:8080/hello 次のレスポンスを返す例を書いていきます。 {"message":"Hello, World!"} 環境・ツール JDK 1.8 以上 Maven 3.0 以…

SpringBoot:アプリの起動・停止シェルスクリプト

以前、Spring Boot のアプリを CentOS のサービスとして起動・停止するシェル(スクリプト)を作成したことがありました。これからその内容を書いていこうと思います。 補足 最近の SpringBoot だと、アプリのサービス登録もサポートしているみたいです。詳…

SpringBoot:findAllOrderBy…Desc のエラー対応

Spring JPA でリポジトリを作成したら、アプリ起動時にエラーが発生しました。今回はそのエラーと対応方法について書いていきます。 リポジトリのコード 次のリポジトリを作成しました。 public interface UserRepository extends PagingAndSortingRepository<User, Long></user,>…

SpringBoot:Velocity の文字化け対応

Spring Boot で Velocity を使ったら、日本語の文字化けが発生しました。今回は、文字化けが解消した方法を書いていこうと思います。 文字化けの発生条件 次の2点を満たしていると、文字化けが発生するようです。 Velocity のテンプレートを UTF-8 などで書…

SpringBoot:@Autowired のエラー対応

@Autowired の使い方を間違えて、エラーを発生させてしまったことがあります。そのときのエラー内容と対応方法について書いていこうと思います。 エラーが発生したコード コントローラ プロパティにサービスクラスを DI したくて、@Autowired を付けていまし…

SpringBoot:Initializrでプロジェクト作成

Java のアプリを開発するときは、アプリのプロジェクトを作成することが多いと思います。プロジェクトは複数のディレクトリで構成されていて、ソースコードやビルドファイル(pom.xml, build.gradle, etc)などの資源を置きます。 Spring Boot の場合、Sprin…

SpringBoot入門:バリデーションをする

Spring Boot の Webアプリで、バリデーション(入力値検証)をする方法を書いていきます。バリデーションには、javax.validation や Hibernate Validator のアノテーションを使います。 前提 この記事は、入門記事「JSONの返却」の資源(ビルドファイル、ク…

SpringBoot:Basic認証の外部サービスに接続

SpringBoot の RestTemplate を使って、Basic認証の外部サービス(はてなブログの AtomPub)に接続することがありました。そのときの Javaコード(一部)を書いていこうと思います。 コード Basic認証の情報を用意してから、RestTemplate を new して接続し…

SpringBoot:pom.xml の version で警告

Spring Boot のアプリで Maven を使っていたところ、pom.xml の version(dependency の子要素)で警告が出ました。これから、事象・原因・対応方法を書いていきます。 事象 JDBC Driver の version を指定すると、Eclipse のエディタで警告(黄色い線とアイ…

SpringBoot アプリ開発:9.テスト

最後に、つぶやきアプリのテスト(一部)を実装していこうと思います。UTは JUnit、IT(画面テスト)は FluentLenium を使います。 補足 テストの方法や範囲、テストで使うプロダクトは、開発条件によって様々だと思います。今回の内容も、あくまで一例…

SpringBoot アプリ開発:8.動作確認

前回までに開発したアプリを起動して、ブラウザで動作を確認していきます。 1. アプリの起動 次のコマンドで起動できます。 sbt > gradle bootRun ・・・ 2016-06-24 12:38:33.015 INFO 2900 --- [ main] sbt.App : Started App in 9.388 seconds (JVM runni…

SpringBoot アプリ開発:7.UI(CSS, JavaScript)

つぶやきアプリ(こちら のアプリ)の UIを作成していきます。今回は、CSS と JavaScript を1つずつ作成します。 CSS の作成 CSS の「作成場所(配置場所)」と「コード(完全版のリンク)」は、以下の通りです。 作成場所:sbt/src/main/resources/publi…

SpringBoot アプリ開発:6.UI(HTML, mustache)

つぶやきアプリ(こちら のアプリ)の UIを作成していきます。HTML ファイルは1つで、その中にマークアップと mustache のテンプレートを書いていきます。 HTML の作成 HTML の「作成場所(配置場所)」と「コード(完全版のリンク)」は、以下の通りです…

SpringBoot アプリ開発:5.Java(コントローラ)

つぶやきアプリ(こちら のアプリ)の コントローラを、Java で作成していきます。コントローラは、リクエストに対応する処理を実行して、処理結果(≒レスポンス)を返却するクラスです。 コントローラの作成 コントローラの「作成場所(配置場所)」と「コ…

SpringBoot アプリ開発:4.Java(モデル・リポジトリ)

つぶやきアプリ(こちら のアプリ)の モデルやリポジトリを、Java で作成していきます。また、事前にテーブル作成用の SQL を用意しておきます。 SQLファイルの作成 テーブル作成用の SQL です。テーブルには、モデルのデータ(つぶやき)が保存されます。 …

SpringBoot アプリ開発:3.プロジェクト作成

つぶやきアプリ(こちら のアプリ)の ディレクトリ構成や、ビルドファイル・設定ファイルを作成していきます。 ディレクトリ構成 事前に次のようなディレクトリ構成を作成しておきます。括弧内に書いているのは、ディレクトリ内に保存する資源です。 sbt └─…

SpringBoot アプリ開発:2.環境準備

つぶやきアプリ(こちら のアプリ)を開発するために、必要な環境を準備していきます。以下に「インストール手順」と「DB設定手順」をまとめていきます。 インストール手順 インストールが必要なプロダクト「JDK」「Gradle」「PostgreSQL」について、イン…

SpringBoot:H2DBに接続

Spring Boot は、アプリが H2DB に依存していると、自動的に「組み込みの H2DB(インメモリの DB)」を起動します。今回は、Spring Boot が起動した H2DB に接続する方法を紹介します。 手順1. ビルドファイルの作成 プロジェクト名 sbh2 のディレクトリ配下…

SpringBoot:環境で設定を変える

Spring Boot の設定ファイル application.properties を、環境に応じて切り替える方法を書いていきます。今回の例では、次のファイルを用意して切り替えてみます。 application.properties application-staging.properties 2番目のファイルはステージング環…

SpringBoot:バリデーションエラーメッセージの共通化

これから、ValidationMessages_ja.properties のエラーメッセージを共通化する手順を書いていきます。今回は例として、共通化前のプロパティファイルの内容が、次のようになっていると仮定します。 NotEmpty.customer.lastName = 姓は必須入力です。 NotEmpt…

SpringBoot:View のロール判定

Spring Boot(Spring Web, MVC)では、色んなテンプレートエンジンを選択することができます。今回は、JSP, FreeMarker, Velocity について、ロール判定の観点からまとめてみました。 JSP:ロール判定可能 JSP は、サーブレットAPI を使えば、ロール判定がで…

SpringBoot:ロール名と認可の設定

Spring Security のロール名について、プログラムの設定値とDBの設定値の違いをまとめてみました。 例として、管理者のロール ROLE_ADMIN を設定することにしています。 プログラムの設定値(認可) 管理者のロールは、ROLE_ を省略して ADMIN という文字…

SpringBoot:Hot Swapping

Hot swapping とは、アプリ起動中にコードの変更を取り込んでくれる機能です。Hot reloading や Hot deploy と呼ばれることもあります。 今回は Spring Boot の Hot swapping について、spring-boot-devtool と、IDE のデバッグ起動のことを書いてみようと思…

SpringBoot:Remember-Me 認証を使う

Remember-Me 認証は、ログイン状態を長期間保持する認証です。この認証をすると、ブラウザを閉じても認証している状態が保持されます。ユーザは、ブラウザを再起動してアクセスしても、再度認証する必要がありません。 これから、Spring Boot アプリで Remem…