しおしお

IntelliJ IDEAのことなんかを書いてます

Spring BootでScalikeJDBCを使ってみた

Spring BootでScalikeJDBCを使ってデータベースにアクセスしてみたお話です。 build.gradle データベース関連のライブラリとScalikeJDBCを足してあげます。 implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframe…

Spring MVCのHandlerInterceptorでPathVariableの値を参照する

HandlerInterceptorでPathVariableの値を参照する方法のメモ HandlerInterceptorの実装例 PathVariableの値はrequest attributeに入っているので、そこから取り出せばよい。 名前は、HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTEを指定する。 class Sam…

WebStormでVue.jsなアプリケーションをデバッグする

npm run devしたVue.jsなアプリケーションをIntelliJ IDEA(WebStorm)でデバッグする的な話を社内のIntelliJ IDEA勉強会でしたら盛り上がったのでブログにも手順を残しておく。*1 アプリケーションを起動する npm run devで起動してあげましょう。 こんな感じ…

古のspring-data-jpaでNativeQueryとPageableを使ってハマった件

Spring Boot 1.5系のバッチ的な処理に急ぎ手を入れる必要があって、RepositoryにNativeQueryでページングするようなメソッド追加したら謎のエラーでめっちゃハマったお話です。*1 Spring Bootバージョン 1.5系の古いやつですね。過去の遺産じゃないかぎり使…

法人番号のチェックデジットを算出してみた

法人番号のチェックデジットの求め方は、法人番号を確認するページにあるチェックデジットの計算リンクから確認できます。 チェックデジットを求めるコード 川口市の法人番号を使ってチェックデジットを求めるコードを書いてみました。 頭ひと桁がチェックデ…

Spring Batchのchunkステップを並列で実行してみた

Spring Batchのchunkステップの各処理を並列実行してみました。 並列実行するためのジョブ定義 Readerで1から100までの連番を生成して、Writerでtestテーブルにbatch insertするだけのシンプルなchunkステップを持つジョブを使って試します。 並列実行されて…

Spring Boot(MVC)でCORSを色々試してみた

雰囲気でCORSの設定してたので設定によってどんな結果になるか調べてみたよ。 クライアントとサーバのコード クライアント getとpostを行うだけの簡単なhtmlを使って試してみます IntelliJさんについている簡易サーバからSpring Bootなアプリケーションにリ…

java.nio.file.Files#linesのclose忘れをIntelliJさんに教えてもらおう

デフォルトの設定では、AutoCloseableのclose忘れを教えてもらえないので、教えてもらえるようにInspectionsの設定を変更してあげましょう 設定手順 下の画像の流れで選択して、 AutoCloseable used without 'try'-with-resources にチェックを入れてあげま…

Ktor 1.2.0(rc)で追加されたThymeleaf Featureを試してみた

KtorでThymeleafを試す - しおしおを書いたけど、Ktor 1.2.0(今はまだrc)からThymeleafが使えるようになるみたいなので試してみた。 gradle関連 gradle.properties Ktorのバージョンを1.2.0系に設定する ktor_version=1.2.0-rc2 build.gradle ktor-thymeleaf…

KtorでThymeleafを試す

Ktor標準ではThymeleafに対応していなかったので、Thymeleaf使えるかどうか試してみた感じです。 ※Ktor1.2以降からThymeleaf機能が追加されたようです→Ktor 1.2.0(rc)で追加されたThymeleaf Featureを試してみた - しおしお Thymeleaf用のFeatureを作る ktor…

elastic4sでcase classを使った登録と検索

elastic4sを使って↓を試してみました。 case classの内容をElasticsearchに登録する 検索結果をcase classにマッピングして取得する build.sbt build.sbtには、elastic4sを追加します。 val elastic4sVersion = "6.5.1" libraryDependencies ++= Seq( "com.s…

IntelliJ IDEA 2019.1でのJUnit実行について…

IntelliJ IDEA 2019.1からはデフォルトではGradleでテスト実行されるようになったようです。 例えばテストを実行すると、こんな感じにGradleで実行されます。 実行方法の設定変更方法 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle ->…

Dockerコンテナ上で動いているJavaアプリケーションをIntelliJさんからデバッグしてみる

IntelliJ IDEA 2019.1 Release Candidate is Out! | IntelliJ IDEA Blogにあるように、 2019.1 からの新機能ですね。 Dockerfileの準備 デバッグ対象のアプリケーションをDockerで動かすためのDockerfileを作ります。 ※docker-compose.ymlでもデバッグいける…

Spring Bootなアプリケーションのキャッシュの内容を定期的にクリアしてみる

@Scheduled アノテーションを使ってタスクを定期実行し、キャッシュの値を定期的にクリアしています。 設定値(application.properties) 簡単に確認出来るインメモリキャッシュを設定しています spring.cache.type=simple サンプルコード @Scheduled で10秒毎…

JUnit5でTempDirを使って一時ディレクトリを扱う

JUnit4のTemporaryFolder的なやつですね。5.4から追加されて、アノテーションに EXPERIMENTAL とあるのでまだ実験的な機能のようです。 サンプル テストメソッド単位に一時ディレクトリを使う テストメソッドの引数として java.nio.file.Path を受け取り、 o…

IntelliJ IDEAのDomaプラグイン(Doma Support)をKotlin対応したよ

こんなツィートを見かけたので、Doma SupportにKotlin対応追加してみました。 Domaは対応されていて結構便利に使えますよ~(https://t.co/HDwCoENTdK )対応してないのはIntelliJプラグインですねsqlファイルをプラグインで作れないのが不便なだけなのでそこ…

KtorでDoma2を使ってデータベースアクセスしてみた

Ktor - asynchronous Web framework for KotlinでDoma2を使ってデータベースアクセスしてみました。 Ktorの公式サイト上にはデータベースアクセスする方法などが全く無いので、これが正解かどうかはわかりませんが… build.gradle データベースアクセスに必要…

Spring Cloud AWSのSecrets Manager機能を試してみた

昔自分で作った、AWS Secrets Managerの値をSpring Bootでいい感じに使えるようにした - しおしおと同じようにAWSのSecrets Managerの値をSpringの設定値として使えるやつがSpring Cloud AWSに追加されていたので試してみました。*1 ライブラリの追加 build.…

IntelliJ IDEAのHTTP Clientでレスポンス内容を他のリクエストで使用する方法

やりたいこと APIから返ってきたレスポンスの内容を他のリクエストのヘッダなどで使用したい。 例えば、レスポンス内に含まれるアクセストークンを他のリクエストのヘッダに設定したいなんてことをしたい。 試した環境 IntelliJ IDEA 2018.3.4(UE) サーバ側…

KDocを生成するIntelliJ IDEAのプラグイン作ったよ

プラグインでできること 下のようにfunction と class や interface でKDocの開始コメント(/**)を入力してEnterでKDocの雛形が生成されます。 なんで作ったの? KT-11079にあるように、公式的にはJavadoc形式の書き方は推奨していないようです。*1 ただ、ち…

KtorでHello World

Ktor触ったことなかったので、IntelliJ IDEAのプラグイン使ってさくっと動かしてみた。 準備 IntelliJ IDEA(使ったバージョン2018.3)にKtor - Plugins | JetBrainsをインストールします。 プラグイン使って雛形プロジェクトの作成 IntelliJ IDEA - Quick Sta…

Spring Session & RedisでJacksonを使ったシリアライズを試してみる

Spring SessionでRedisにセッション情報を格納する際に、Jacksonを使ってシリアライズをできるみたいなので試してみました。*1 ライブラリのバージョンなど build.gradleを参照ください。 Sessionの格納先をRedisにする application.propertiesに以下を追加…

IntelliJのDocker integrationプラグインからExecした時に保存されるコマンド履歴を削除する方法

IntelliJさんのDocker Integrationプラグインを使うとIDE上からdocker execできて便利ですよね。でも、コマンド名間違えちゃった場合にそれが記憶されて、次にExecしようとした時に誤ったコマンド名が候補に出てくるの邪魔ですね… そんなときは設定ファイル…

Gradle 5.0でMavenのBOMを使おう

Managing Transitive Dependenciesあたりをお試ししてみました。 implementation platformを使ってみる build.gradle BOMをimplementation platformに指定します。 BOMで定義されているバージョンを使用するので、個別のライブラリ(この例ではjackson-databi…

Spring Cloud Configを使ってみる

Spring Cloud Configを使って、アプリケーションが使う環境毎に異なる設定値をちゃんと構成管理してみる。Spring Cloud Configは、設定値をAPIで配信するConfig Serverが必要となる。アプリケーションは、Config Serverから環境に応じた設定値を取得して動作…

VeeValidateで入力値のバリデーションをしてみる

VeeValidateのインストール 現時点の最新版は、2.1.3になります。 npm install vee-validate --save VeeValidateをVueに追加する import Vue from 'vue'; import VeeValidate from 'vee-validate'; Vue.use(VeeValidate); 入力フォームにバリデーションルー…

IntelliJ IDEAのDatabase WindowからDoma2用Entityを生成する

IntelliJ IDEAのDatabase WindowsからDoma2用のEntityを生成してみたお話です。IntelliJのデフォルトの状態だと下の画像のようにGenerated POJOsしか選択できません。ここに、Doma2用のEntityを生成するスクリプトを追加してEntityを生成できるようにします…

Spring Cloud AWSで異なるリージョンにあるSESを使ってみる

Spring Cloud AWSのSESでアプリケーションとは異なるリージョンにあるSESを使う方法 *1 アプリケーションのリージョンの指定 リージョンの指定は、application.propertiesにこんな感じに設定します。 cloud.aws.region.auto=false cloud.aws.region.static=a…

Dockerfile不要のコンテナビルダーのGradleプラグインを触ってみた

↓を見て便利そうなのでどんな感じなのかなと触ってみました。Dockerfile不要のJava向けコンテナビルダー。MavenやGradleのプラグインとして動作する / “Google Cloud Platform Blog: Introducing Jib — build Java …” https://t.co/bAsxCO4lGr— progrhyme (@…

SonarQubeの結果をUpsourceに連携してみた

External inspections support - Help | Upsource を参考にやってみました。 SonarQubeにUpsourceに連携するための拡張をインストールする upsource-sonar-plugin-0.1-SNAPSHOT.jarをダウンロードして、 $SONARQUBE_HOME/extensions/pluginsにおいてあげます…