
spring-boot
FlywayのSQLにはプレースホルダが使える
FlywayによるDBマイグレーションで、ユーザーテーブルのようなものをセットアップしたい場合に、SQLに直接パスワードを書きたくないなと調べたところ、プレースホルダーを使えることがわかったので、そのメモです。SpringBootを組み合わせると、さらに便利に使えるようになるので、今回はSpringBootを使ったサンプルになります。環境要件OracleJDK1.8.0_161Kotlin1.2.71SpringBoot2.1.3.RELEASEFlyway5.2.4プレースホルダーの書き方プレースホルダーを使うには、変数化したい箇所を${variable.name}のように書き換えるだけです。はじめに書いたような、パスワードをSQLから追い出したいような場合は、以下のように書きます。なお今回のサンプルは、MySQLで確認しています。INSERTINTO`users`(`id`,`user2019.03.02
KotlinでJPA使用時にデフォルトコンストラクタ要求を回避する
KotlinでJPAを使用する場合、エンティティクラスにデフォルトコンストラクタが存在しないと、以下のような例外がスローされます。org.springframework.orm.jpa.JpaSystemException:Nodefaultconstructorforentity::..;nestedexceptionisorg.hibernate.InstantiationException:Nodefaultconstructorforentity::..これはJPA実装のひとつであるHibernateが、エンティティクラスのインスタンス生成時に、引数付きコンストラクタではなく、デフォルトコンストラクタを使おうとするために発生する例外ですが、Kotlinでは、コンストラクタとプロパティを一緒に記述できるため、多くの場合デフォルトコンストラクタが用意されません。Kotlinでデフォルト2019.02.26
Spring Bootプロファイルの指定あれこれ
SpringBootにはプロファイルという、環境ごとの設定やBean構成のロードを切り替える機能があります。プロファイルは、名前ベースで切り替えることができ、とても直感的に使うことができて便利です。ところが少し変わったことをしようとすると、途端に躓いてしまう部分でもあるので、プロファイルをもう一歩踏み込んで使うためのポイントをいくつかまとめてみます。要件環境Java8Kotlin1.2.41SpringBoot2.0.4.RELEASE基本的な使い方以下のようなテストがあった場合に、userへ何がDIされるかをプロファイルを使って切り替えてみます。@RunWith(SpringRunner::class)@SpringBootTestclassDemoSpringProfileApplicationTests{@Autowiredlateinitvaruser:User@Testfunco2018.08.11
Keycloak 4とSpring Boot 2アプリの連携 - リソースサーバー
Keycloak4がリリースされたのに合わせてkeycloak-spring-boot-2-starterもリリースされたので、SpringBoot2との連携例を紹介しようという記事の2回目です。(1回目はこちら)https://github.com/yo1000/kc4-boot2-resource要件環境今回の作業環境は以下のとおりです。Java1.8Kotlin1.2.41SpringBoot2.0.3.RELEASEKeycloak4.0.0.Final認証認可フロー今回は、SSOクライアントが複数で、それぞれがリソースサーバーとリソースクライアントの関係にある認証の流れを確認していきます。以下のような認証フローをイメージしてください。KeycloakのセットアップKeycloak3から、Keycloak4への移行によって、基本的な使い方に大きな変更が生じないのは、構成が変わっても2018.06.24
Keycloak 4.0とSpring Boot 2.0アプリの連携 - 単一クライアント
つい先日、待ちに待ったKeycloak4がいよいよリリースされました。なぜ待っていたかというと、Keycloak4用の連携モジュールからはSpringBoot2に正式対応されるからなんですね。(Keycloak3用の連携モジュールはSpringBoot1系にしか対応していませんでした。)Keycloak3の頃からIssueはあがっておりましたが、Keycloak開発チームから、Keycloak4のリリースと一緒に対応するよ、といった回答がされており、これを待っておりました。やっと材料が出揃ったということで、さっそくこれらを連携させたサンプルを確認していきたいと思います。実現したいSSOのフローに応じて、2回に分けて書きます。なお、文章はサンプルプロジェクトの内容を追いながら書いていくので、以下も併せて確認してください。https://github.com/yo1000/kc4-boot2要2018.06.23
Springで外部APIをリクエストする場合のテスト
外部APIをリクエストしている機能のテストをしたい場合、Springでは、MockRestServiceServerを使います。MockRestServiceServerを使うと、RestTemplateがリクエストしたURL等の条件に応じて、期待したレスポンスを返すようにテストを構成できるようになります。また必要に応じて、モックされたリクエストが、正しく順番通りに使用されたかどうかも検証できます。なお、今回のサンプルコードは以下にあるので、こちらも参考に。https://github.com/yo1000/example.MockRestServiceServer/tree/master/MockRestServiceServer-client要件Java1.8.0_121Maven3.5.3Kotlin1.2.41SpringBoot1.5.12.RELEASE$./mvnw-vApa2018.06.09
Spring初学者が最初に知るべき責務とレイヤー
こちらのポストは随分と内容が古くなってきたため、新たに書き直しました。Spring初学者が最初に知るべき責務とレイヤーとDDD(2020年改訂)このポストは、過去にQiitaで書いたものを改訂したものです。新年度を迎えるたび、Qiitaでのポストへたびたび「いいね」がつくので、入社等をきっかけに、新たな環境ではじめてSpringに触れる方もきっと多いのでしょう。自分の周囲に対しても、Springを説明する際によく使用していたポストだったので、内容の見直しも兼ねて、こちらのサイトに改訂版としてポストしておこうかと。レイヤーアーキテクチャSpringでは各コンポーネントの責務に応じたステレオタイプアノテーションが用意されており、これらがどう連携するかについては、レイヤーアーキテクチャをイメージすると理解しやすいです。Springでの各責務レイヤーは、以下のように連携します。各レイヤーの責務各レ2018.05.22
KeycloakリソースサーバーJavascriptクライアントの連携例
概要Keycloakと、リソースサーバー、リソースクライアント間のSSO検証メモ。(Javascriptクライアント版)すでに検証部分の大半は過去のポストで完了しているため、ここでは主にJavascript版での差分と、Javascriptクライアントからの利用方法を中心に書いていきます。この手順で使用したコードは、以下に公開しているので、こちらも参考にしてください。https://github.com/yo1000/kc-resource/tree/e09c1dd987/kc-resource-client-js要件環境今回の作業環境は以下のとおりです。Java1.8.0_131SpringBoot1.5.9.RELEASEKeycloak3.4.1.FinalNodeJSv8.4.0NPM5.6.0$sw_versProductName:MacOSXProductVersion:10.2018.01.06
Keycloak認証を使うリソースサーバーのGroovy Spockテスト
概要Keycloakによる認証を使う、リソースサーバー(SpringBootクライアント)でのGroovySpockテスト実装メモ。この手順で使用したコードは、以下に公開しているので、こちらも参考にしてください。https://github.com/yo1000/kc-resource/ac9914ae02#try-testing-with-only-kc-resource-serverまた、テストについては、既に過去のポストで触れているため、ここでは、GroovySpockを適用するにあたって、変更が必要となる部分について書いていきます。要件環境今回の作業環境は以下のとおりです。Java1.8.0_131SpringBoot1.5.9.RELEASEKeycloak3.4.1.FinalGroovy2.4.11Spock1.1-groovy-2.4$sw_versProductName:2018.01.03
Keycloak認証を使うリソースサーバーのテスト
概要Keycloakによる認証を使う、リソースサーバー(SpringBootクライアント)でのテスト実装メモ。この手順で使用したコードは、以下に公開しているので、こちらも参考にしてください。https://github.com/yo1000/kc-resource/584c4c92ce#try-testing-with-only-kc-resource-serverまた、テストコード以外の部分については、過去のポストを前提としています。関連するものについては軽く触れますが、詳細を確認したい場合は、そちらを確認してください。要件環境今回の作業環境は以下のとおりです。Java1.8.0_131SpringBoot1.5.9.RELEASEKeycloak3.4.1.Final$sw_versProductName:MacOSXProductVersion:10.12.5BuildVersion2017.12.25
Keycloakリソースサーバー リソースクライアントの連携例
概要KeycloakによるSSO基盤構築検証のメモ。SSOサーバー(Keycloak)のセットアップと、SSOクライアント(リソースサーバー、リソースクライアント)の開発を順に見ていきます。この手順で使用したコードは、以下に公開しているので、こちらも参考にしてください。https://github.com/yo1000/kc-resource要件環境今回の作業環境は以下のとおりです。Java1.8.0_131SpringBoot1.5.9.RELEASEKeycloak3.4.1.Final$sw_versProductName:MacOSXProductVersion:10.12.5BuildVersion:16F2073$java-versionjavaversion"1.8.0_131"Java(TM)SERuntimeEnvironment(build1.8.0_131-b11)J2017.12.17


