かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot でメール送信する Web アプリケーションを作る ( その3 )( Project の作成 )

概要

Spring Boot でメール送信する Web アプリケーションを作る ( その2 )( PostgreSQL 9.4.1、smtp4dev のインストール ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。

    • Project の作成
  • 今回いくつかのファイルは ksbysample-webapp-basic からコピーして持ってきます。

ソフトウェア一覧

参考にしたサイト

  1. Doma - User Documentation - ビルド - Gradle を使ったビルド
    http://doma.readthedocs.org/ja/stable/build/?highlight=gradle#gradle

    • Doma 2 のための build.gradle の設定をする際に参照しました。
  2. PostgreSQL JDBC Driver - Chapter 3. Initializing the Driver - Connecting to the Database
    https://jdbc.postgresql.org/documentation/94/connect.html

手順

IntelliJ IDEA の起動、Project の作成

  1. IntelliJ IDEA を起動します。他の Project を開いている場合には、メイン画面のメニューから「File」->「Close Project」を選択して Project をクローズします。

  2. 「Welcome to IntelliJ IDEA」画面が表示されます。画面中央の「Create New Project」をクリックします。

  3. 「New Project」画面が表示されます。画面左側のリストから「Gradle」を選択します ( 前回から何もしていなければこの時点で既に Gradle が選択されています )。

  4. 画面右側に Gradle Project の設定画面が表示されます。以下の設定をした後「Next」ボタンをクリックします。

    f:id:ksby:20150411192656p:plain

    • 「Project SDK」で「1.8 (1) (java version "1.8.0_40")」が選択されていることを確認します。
    • 「Create directories for empty roots automatically」をチェックします。
      ※プロジェクトの src ディレクトリが自動で作成されます。
    • 「Gradle JVM」で「1.8 (1) (java version "1.8.0_40", path: C:/Java/jdk1.8.0_40)」を選択します。
      ※ここで初めて「Project SDK」と「Gradle JVM」の設定が別なことを知りました。ksbysample-webapp-basic の「Gradle JVM」の設定はたぶん 1.8.0_25 のままですね。。。 後で修正しておきましょう。
  5. プロジェクト名とディレクトリを入力する画面が表示されます。以下の値を入力後「Finish」ボタンをクリックします。「Directory Does Not Exist」ダイアログが表示されたら「OK」ボタンをクリックします。

    • 「Project Name」に ksbysample-webapp-email と入力します。
    • 「Project location」に C:\project-springboot\ksbysample-webapp-email と入力します。
  6. IntelliJ IDEA のメイン画面が表示されます。最初に Gradle が実行されて src ディレクトリが作成されますので ( メイン画面の下にメッセージが表示されています )、src ディレクトリが表示されるまで待ちます。

build.gradle の編集、反映

  1. 画面左側の Project View から build.gradle をダブルクリックして開きます。

  2. build.gradle をリンク先の内容に変更します。

    • ksbysample-webapp-basic の build.gradle をコピーした後、必要な箇所を修正しています。
  3. Gradle projects View の左上にある「Refresh all Gradle projects」アイコンをクリックして、変更した build.gradle の内容を反映します。

    • Refresh 前は Gradle projects View に bootRun タスクが表示されていなかったのですが、build.gradle を変更して refresh したところ表示されました。最初 IntelliJ IDEA 14.1 から無くなったのかと思いました。

Lombok Plugin のアップデート

ksbysample-webapp-basic を開発していた時に Lombok Plugin がアップデートした旨のメッセージダイアログが表示されていましたので、今回使用する lombok のバージョンを上げることに合わせてアップデートします。

  1. メイン画面のメニューから「File」->「Settings...」を選択します。

  2. 画面左側のツリーから「Plugins」をクリックした後、画面右側に表示される「Plugins」画面の中央下にある「Browse repositories...」ボタンをクリックします。

    f:id:ksby:20150412011749p:plain

  3. 「Browse Repositories」ダイアログが表示されます。画面左上の検索文字列入力欄に "Lombok" と入力して表示された Plugin 一覧から Lombok Plugin を選択し、画面左側の「Update plugin」ボタンをクリックします。

    f:id:ksby:20150412012210p:plain

  4. 「Download and Install」ダイアログが表示されます。「Yes」ボタンをクリックします。

  5. ダウンロードとインストールが完了すると画面左側の「Install plugin」ボタンが「Restart IntelliJ IDEA」ボタンに変わっていますので、クリックします。

  6. 「Settings」ダイアログに戻りますので、画面下部の「OK」ボタンをクリックします。

  7. 「Plugins Changed」ダイアログが表示されますので、「Restart」ボタンをクリックします。

  8. IntelliJ IDEA が再起動し、Lombok Plugin のインストールが完了します。画面左上に「Lombok support plugin updated to v0.9.2」のダイアログが表示されるので閉じます。

Project の設定

※たぶん Project の設定は基本的な設定を作成しておいて、IntelliJ IDEA のメインメニューの「File」-「Export Settings...」、「File」-「Import Settings...」で新規プロジェクトを作成する毎に import した方がよさそうです。今回は一旦全部手動で設定します。

  1. メイン画面のメニューから「File」->「Settings...」を選択して「Settings」ダイアログを表示します。

  2. native2ascii を有効にします。画面左側で「Editor」->「File Encodings」を選択後、画面右側の下部に表示される「Transparent native-to-ascii conversion」をチェックして「Apply」ボタンをクリックします。

    f:id:ksby:20150411235854p:plain

  3. lombok を使用するのに必要な設定を有効にします。画面左上の検索フィールドに "Annotation" と入力すると画面左側のツリーの一番下に「Annotaion Processors」が表示されるのでそれを選択した後、画面右側に表示する「Enable annotaion processing」をチェックします。

    f:id:ksby:20150412013638p:plain

  4. Project Encoding を UTF-8 に設定します。画面左上の検索フィールドに "Project Encoding" と入力して画面左側のツリーから「Editor」-「File Encodings」を選択した後、画面右側に「Project Encoding」の設定項目が表示されますので「windows-31j」→「UTF-8」に変更します。

    f:id:ksby:20150418235230p:plain

  5. Gradle の文字コードVM options で指定します。画面左上の検索フィールドに "Gradle" と入力した後、画面左側のツリーの一番下に表示される「Gradle-Android Compiler」を選択します。画面右側に「VM Options」の欄がありますので、ここに "-Dfile.encoding=UTF-8" を入力します。

    f:id:ksby:20150529054459p:plain

  6. Gradle が使用する JVM を Project の JVM に合わせます。画面左上の検索フィールドに "gradle" と入力して画面左側のツリーから「Build, Execution, Deployment」-「Build Tools」-「Gradle」を選択した後、画面右側の「Gradle JVM」で「Use Project JDK(...)」を選択します。

    f:id:ksby:20150428023331p:plain

  7. YAML ファイルを編集する時に IntelliJ IDEA が行末の空白を自動で取り除かないよう設定を変更します。画面左側のツリーから「Editor」-「General」を選択後、画面右側の下部にある「Strip trailing spaces on Save」で「None」を選択します。選択後「OK」ボタンをクリックして「Settings」ダイアログを閉じます。

    f:id:ksby:20150520045609p:plain

  8. メイン画面のメニューから「File」->「Project Structure...」を選択して「Project Structure」ダイアログを表示します。

  9. Project language level を「8 - lambdas, type annotations etc.」に設定して Java 8 の lambda や Stream API を使用できるようにします。画面左側のツリーから「Project Settings」-「Project」を選択し、画面右側で「Project language level」の設定を「6 - @Override in interfaces」→「8 - lambdas, type annotations etc.」へ変更後「OK」ボタンをクリックして「Project Structure」ダイアログを閉じます。

    f:id:ksby:20150422005459p:plain

  10. メイン画面のメニューから「Run」-「Edit Configurations...」を選択します。

  11. JUnit によるテスト実行時の spring.profiles.active の値 ( unittest ) と文字コード ( UTF-8 ) を設定します。「Run/Debug Configuraitons」ダイアログが表示されます。左側のツリーで「Defaults」-「JUnit」を選択した後、右側の画面の「VM options」の末尾に -Dspring.profiles.active=unittest -Dfile.encoding=UTF-8 を追加します。追加後「OK」ボタンをクリックしてダイアログを閉じます。

    f:id:ksby:20150514020221p:plain

package の作成

  1. Project View の「Compact Empty Middle Packages」のチェックを外します。

    f:id:ksby:20150411210325p:plain

  2. src/main/java の下に以下の階層の package を作成します。

    f:id:ksby:20150411210623p:plain

templates ディレクトリの作成

  1. Project View で src/main/resources の下に templates ディレクトリを作成します。

ksbysample-webapp-basic からファイルをコピーする

  1. ksbysample-webapp-basic から以下のファイルをコピーします。

    ※src/main/java/ksbysample/webapp/basic の下のファイルは src/main/java/ksbysample/webapp/email の下へコピーします。また package も ksbysample.webapp.email へ変更します。

    • .gitignore
    • src/main/java/ksbysample/webapp/basic/Application.java
    • src/main/java/ksbysample/webapp/basic/config/ApplicationConfig.java
    • src/main/resources/application.properties
    • src/main/resources/applicationContext.xml
    • src/main/resources/application-develop.properties
    • src/main/resources/application-product.properties
    • src/main/resources/application-unittest.properties
    • src/main/resources/log4jdbc.log4j2.properties
    • src/main/resources/logback.xml
    • src/main/resources/logback-develop.xml
    • src/main/resources/logback-product.xml
    • src/main/resources/logback-unittest.xml
    • src/main/resources/messages_ja_JP.properties
    • src/main/resources/ValidationMessages_ja_JP.properties
  2. src/main/java/ksbysample/webapp/email/config の下の ApplicationConfig.javaリンク先の内容に変更します。

  3. src/main/resources の下の application.properties をリンク先の内容に変更します。
  4. src/main/resources の下の applicationContext.xmlリンク先の内容に変更します。
  5. src/main/resources の下の application-develop.properties をリンク先の内容に変更します。
  6. src/main/resources の下の application-product.properties をリンク先の内容に変更します。
  7. src/main/resources の下の application-unittest.properties をリンク先の内容に変更します。
  8. src/main/resources の下の logback.xmlリンク先の内容に変更します。
  9. src/main/resources の下の messages_ja_JP.properties をリンク先の内容に変更します。
  10. src/main/resources の下の ValidationMessages_ja_JP.properties をリンク先の内容に変更します。
  11. Ctrl+F9 を押してコンパイルが正常に終了することを確認します。

Tomcat の起動、終了の確認

  1. Gradle projects View から bootRun タスクを実行します。Started Application in ... のログまで出力されて起動はされますが、途中でjava.sql.SQLFeatureNotSupportedException: org.postgresql.jdbc4.Jdbc4Connection.createClob() メソッドはまだ実装されていません。 という例外が出力されていました。原因を調査してみます。

    • Web で検索して見ましたが、はっきり分かるような記事は見当たりませんでした。
    • 例外が出力されているログのソースファイルを見ていったところ、at org.hibernate.engine.jdbc.internal.LobCreatorBuilder.useContextualLobCreation(LobCreatorBuilder.java:112) から該当のソースファイルを見た時に LobCreatorBuilder.java の useContextualLobCreation メソッドのコメントに Basically here we are simply checking whether we can call the {@link Connection} methods for LOB creation added in JDBC 4. と書かれており、どうも単にチェックしているだけのようです。確かに Tomcat 起動時のログでは例外が出力された後に Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException というログが出力されて次へ進んでいましたので、createClobメソッドがあるかチェックする→メソッドがない→createClobメソッドを使用しないようにした、という処理をしているものと思われます。

      f:id:ksby:20150412102817p:plain

    • 出来れば例外を出したくなかったので LobCreatorBuilder.java の useContextualLobCreation メソッドの中をもう少し見てみたところ、Environment.NON_CONTEXTUAL_LOB_CREATION が true ならメソッドチェックをしないようでした。Environment.NON_CONTEXTUAL_LOB_CREATION で Ctrl+B を押して定義を見たところ hibernate.jdbc.lob.non_contextual_creation という設定項目とのこと。

      f:id:ksby:20150412103104p:plain

    • hibernate. で始まる設定は application.properties に設定していましたので、hibernate.jdbc.lob.non_contextual_creation = true を追加してみましたが、例外が出力されるところは変わりませんでした。

    • 設定をどこから取得しているのか確認するために Environment.NON_CONTEXTUAL_LOB_CREATION の Environment クラスのソースファイルを Ctrl+B で開いて中を見てみたところ、static メソッドの中に InputStream stream = ConfigHelper.getResourceAsStream( "/hibernate.properties" ); の記述を発見。

      f:id:ksby:20150412103234p:plain

    • hibernate.properties があれば設定されそうなので、src/main/resources の下に hibernate.properties を新規作成し、リンク先の内容を記入します。

    • 再度 bootRun タスクを実行して Tomcat を起動してみると、今度は例外は出力されず、ログには HHH000421: Disabling contextual LOB creation as hibernate.jdbc.lob.non_contextual_creation is true と出力されていました。良さそうなので、この設定で進めます。
    • またこの調査中に偶然気づきましたが、ソースファイル上で Ctrl+F12 を押すとソースファイル内のフィールド、メソッド一覧が表示されました。Structure View を開かないといけないものと思っていましたが、こちらの方が便利なので覚えておきたいと思います。

      f:id:ksby:20150412103512p:plain

  2. Run View で Ctrl+F2 を押して Tomcat を停止します。

    • 14.0.3 では Tomcat が停止するまで IntelliJ IDEA が固まっていたのですが、14.1.1 からは Tomcat の停止を待たずに次の操作が出来るようになっていました。細かいところが改良されていて、やっぱり 14.0.3 の時より使いやすくなっている感じがします。

GitHub へのアップロード

  1. メイン画面のメニューから「VCS」->「Import into Version Control」->「Share Project on GitHub」を選択します。

  2. 「Share Project on GitHub」ダイアログが表示されます。「Description」を記入して「Share」ボタンをクリックします。

    f:id:ksby:20150412112454p:plain

  3. 「Add Files For Initial Commit」ダイアログが表示されます。何も変更せずに「OK」ボタンをクリックします。

  4. チェックされたファイルが GitHub へアップロードされます。成功するとメイン画面の左下に「Successfully shared project on GitHub」のメッセージが表示されます。

  5. ブラウザを起動し、https://github.com/ksby にアクセスします。「Popular repositories」欄に ksbysample-webapp-email が表示されていることを確認した後、ksbysample-webapp-email リンクをクリックします。

  6. https://github.com/ksby/ksbysample-webapp-emailへ遷移します。ページ下部にある「Add a README」ボタンをクリックします。

  7. README の編集画面が表示されるので適宜編集した後、ページ下部の「Commit new file」ボタンをクリックします。

  8. https://github.com/ksby/ksbysample-webapp-emailへ戻り、README.md が作成されていることが確認できます。

  9. 画面上部の「Edit」リンクをクリックして「Description」を「Spring Boot でのメール送信機能と Doma 2 を使用した Webアプリケーションのサンプル」へ変更します。

  10. IntelliJ IDEA のメインメニューから「VCS」-「Update Project...」メニューを選択します。「Update Project」ダイアログが表示されたら何も変更せずに「OK」ボタンをクリックします。

1.0.x ブランチの作成

  1. IntelliJ IDEA で 1.0.x ブランチを作成します。

  2. GitHub へ Push します。

ソースコード

build.gradle

buildscript {
    repositories {
        jcenter()
        // for org.springframework:springloaded
        maven { url "http://repo.spring.io/repo/" }
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
        classpath("org.springframework:springloaded:1.2.3.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'spring-boot'
apply plugin: 'idea'

// for Doma 2
// JavaクラスとSQLファイルの出力先ディレクトリを同じにする
processResources.destinationDir = compileJava.destinationDir
// コンパイルより前にSQLファイルを出力先ディレクトリにコピーするために依存関係を逆転する
compileJava.dependsOn processResources

jar {
    baseName = 'ksbysample-webapp-email'
    version = '0.0.1-SNAPSHOT'
}

idea {
    module {
        inheritOutputDirs = false
        outputDir = file("$buildDir/classes/main/")
    }
}

repositories {
    jcenter()
    // for org.seasar.doma:doma
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}

dependencies {
    // spring-boot-gradle-plugin によりバージョン番号が自動で設定されるもの
    // Appendix E. Dependency versions ( http://docs.spring.io/spring-boot/docs/current/reference/html/appendix-dependency-versions.html ) 参照
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("org.apache.velocity:velocity")
    compile("org.codehaus.janino:janino")
    testCompile("org.springframework.boot:spring-boot-starter-test")
    testCompile("org.yaml:snakeyaml")

    // spring-boot-gradle-plugin によりバージョン番号が自動で設定されないもの
    compile("org.postgresql:postgresql:9.4-1201-jdbc41")
    compile("org.seasar.doma:doma:2.2.0")
    compile("org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16")
    compile("org.apache.commons:commons-lang3:3.4")
    compile("org.projectlombok:lombok:1.16.2")
    testCompile("org.dbunit:dbunit:2.5.0")
}

bootRun {
    jvmArgs = ['-Dspring.profiles.active=develop']
}

test {
    jvmArgs = ['-Dspring.profiles.active=unittest']
}
  • 今回は Spring Boot Reference Guide - Appendix E. Dependency versions に記述のあるライブラリはバージョン番号を記述せず、spring-boot-gradle-plugin に任せることにしました。
  • Appendix E. Dependency versions には MySQLJDBCドライバは含まれているのに、PostgreSQL は含まれていないんですね。。。
  • 以下のライブラリは jcenter にアップロードされているバージョンが上がっていたので、それに合わせました。
    • org.apache.commons:commons-lang3
    • org.projectlombok:lombok
  • 今回 ORM には Doma 2 を使用しますが、compile("org.springframework.boot:spring-boot-starter-data-jpa") の設定も入れています。これは DataSource Bean 関連の自動設定を利用したいと思ったからです。

ApplicationConfig.java

package ksbysample.webapp.email.config;

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class ApplicationConfig {

    @Bean
    @ConfigurationProperties("spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

}
  • MyBatis に関する実装を削除しました。

application.properties

hibernate.dialect = org.hibernate.dialect.PostgreSQL9Dialect

spring.jpa.hibernate.ddl-auto = none
spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.ImprovedNamingStrategy
  • hibernate.dialect を PostgreSQL v9 のものに変更しました ( org.hibernate.dialect. だけにした後 Ctrl+SPACE キーを押すと候補が表示されます )。
  • 今回は DB のテーブル名はスネークケースにするので、spring.jpa.hibernate.naming_strategy の設定を org.hibernate.cfg.ImprovedNamingStrategy に変更しました。

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*" rollback-for="Exception" timeout="3"/>
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <aop:pointcut id="pointcutService" expression="execution(* ksbysample.webapp.email.service..*Service.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcutService"/>
    </aop:config>

</beans>
  • <aop:pointcut id="pointcutService" expression="execution(* ksbysample.webapp.basic.service..*Service.*(..))"/><aop:pointcut id="pointcutService" expression="execution(* ksbysample.webapp.email.service..*Service.*(..))"/> へ変更しました。

application-develop.properties

spring.datasource.url = jdbc:log4jdbc:postgresql://localhost/postgres
spring.datasource.username = postgres
spring.datasource.password = xxxxxxxx
spring.datasource.driverClassName = net.sf.log4jdbc.sql.jdbcapi.DriverSpy

spring.messages.cache-seconds = 0

spring.thymeleaf.cache = false
  • spring.datasource の設定を一旦デフォルトで作成されている postgres データベースにします。

application-product.properties

server.tomcat.basedir = C:/webapps/ksbysample-webapp-email

spring.datasource.url = jdbc:postgresql://localhost/postgres
spring.datasource.username = postgres
spring.datasource.password = xxxxxxxx
spring.datasource.driverClassName = org.postgresql.Driver

spring.thymeleaf.cache = true
  • server.tomcat.basedir の設定を変更しました。
  • spring.datasource の設定を一旦デフォルトで作成されている postgres データベースにします。
  • spring.datasource.driverClassName の設定を PostgreSQLJDBCドライバである org.postgresql.Driver に変更しました。

application-unittest.properties

spring.datasource.url = jdbc:postgresql://localhost/postgres
spring.datasource.username = postgres
spring.datasource.password = xxxxxxxx
spring.datasource.driverClassName = org.postgresql.Driver

spring.thymeleaf.cache = true
  • spring.datasource の設定を application-product.properties と同じにします。

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>MS932</charset>
        </encoder>
    </appender>

    <property name="LOG_FILE" value="C:/webapps/ksbysample-webapp-email/logs/ksbysample-webapp-email.log"/>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <if condition='"${spring.profiles.active}" == "develop"'>
        <then>
            <include resource="logback-develop.xml"/>
        </then>
    </if>
    <if condition='"${spring.profiles.active}" == "unittest"'>
        <then>
            <include resource="logback-unittest.xml"/>
        </then>
    </if>
    <if condition='"${spring.profiles.active}" == "product"'>
        <then>
            <include resource="logback-product.xml"/>
        </then>
    </if>
</configuration>
  • <property name="LOG_FILE" value="C:/webapps/ksbysample-webapp-basic/logs/ksbysample-webapp-basic.log"/><property name="LOG_FILE" value="C:/webapps/ksbysample-webapp-email/logs/ksbysample-webapp-email.log"/> へ変更します。

messages_ja_JP.properties

AbstractUserDetailsAuthenticationProvider.locked=入力された ID はロックされています
AbstractUserDetailsAuthenticationProvider.disabled=入力された ID は使用できません
AbstractUserDetailsAuthenticationProvider.expired=入力された ID の有効期限が切れています
AbstractUserDetailsAuthenticationProvider.credentialsExpired=入力された ID のパスワードの有効期限が切れています
AbstractUserDetailsAuthenticationProvider.badCredentials=入力された ID あるいはパスワードが正しくありません

typeMismatch.java.math.BigDecimal=数値を入力して下さい。
typeMismatch.java.lang.Long=数値を入力して下さい。
  • ksbysample-webapp-basic 用のメッセージを削除しました。

ValidationMessages_ja_JP.properties

javax.validation.constraints.NotNull.message=必須の入力項目です。

org.hibernate.validator.constraints.NotBlank.message=必須の入力項目です。

error.size.max = {max}文字以内で入力して下さい。
error.digits.integerandfraction = 数値を整数{integer}桁以内、小数{fraction}桁以内で入力して下さい。
error.digits.integeronly = 数値を整数{integer}桁以内で入力して下さい。
  • ksbysample-webapp-basic 用のメッセージを削除しました。

hibernate.properties

hibernate.jdbc.lob.non_contextual_creation = true

履歴

2015/04/12
初版発行。
2015/04/19
* 「Project の設定」に Project Encoding を UTF-8 に設定する手順を追加。
2015/04/22
* 「Project の設定」に Project language level を「8 - lambdas, type annotations etc.」に設定する手順を追加。
2015/04/29
* 「Project の設定」に Gradle が使用する JVM を Project の JVM に合わせる手順を追加。
2015/06/02
* 「Project の設定」に Gradle の文字コードVM options で指定する手順を追加。
* 「Project の設定」に IntelliJ IDEA が行末の空白を自動で取り除かないように設定する手順を追加。
* 「Project の設定」に JUnit によるテスト実行時の spring.profiles.active と文字コードを設定する手順を追加。