Tagbangers Blog

Java

Spring Data Jpaが提供するQuery Method機能を調べてみよう

Spring Data Jpaが提供する機能を調べてみよう Query Methodの三つの機能 メソッド名前でクエリ作成 メソッド名前でJPA NamedQuery呼び出し @Queryアノテーションを使いレポジトリインタフェースに直接クエリを定義 メソッド名前でクエリ作成 Spring Data JPAがメソッドの名前を分析してJPQLクエリを実行してくれる。 注意点: エンティティの名前が変更されると必ずインタフェースに定義したメソッドの名前も一緒に変更する必要がある、そうでないとアプリケーションを立ち上げる時点でエラーが生じる。こうやってアプリケーションのロード時にエラーを検知できるの...

Springの学習日記Part2: デザインパターン

もう春の兆し 最近暖かくなってきたのものあって朝は清々しくて気持ちいいですね(夜は寒いけど)。こういう日はランニングとかしたら気持ちいいだろうなーなんて思いながらいつもゴロゴロしてます笑。 とはいえ運動不足も嫌なのでスクワッドは毎日欠かさずやるようにしてます。なんかふくらはぎが第二の心臓らしい?(のでちょっと調べてみた) ふくらはぎの筋肉を動かすことで、足に滞っている血液を心臓の方へ押し戻すことができます。 このことから、ふくらはぎは別名「第二の心臓」 と呼ばれており、とても大切な働きをしているのです。 なるほど、血液を心臓に押し戻さないといけないとどうなる?・・・って想像したらなんとなく茶番...

Springの学習日記Part1: DIについて

この記事を書き始めようと思ったきっかけ 普段の業務でバックエンドをSpring Bootで開発しているのですが、どうも自分が書いているとSpringについて基礎を知らないことがわかり、また何がわからないのかをうまく言語化した上で相手に伝えられない事態になっていました。 また上司に言語化する練習をすることを勧められた経緯もあって、自身の過去をよくよく振り返ってみた結果、コードを書いていく中で湧いてきた疑問や、自身の考えについてよく整理できていないまま(最適なワードが見つからないまま)相手に伝えていたことがしばしばありました。 当然その状態では、自分が求めている情報について検索したり相手から情報を...

Paketo Buildpacks で作成する Spring Boot App on Docker で FFmpeg を扱えるようにする

Cloud Native Buildpacks は Docker 上でアプリケーションを稼働させるにあたり非常に強力なソリューションです Tagbangers では Spring Boot と Next.js で作成したアプリを AWS EKS / AWS ECR にデプロイして Docker Container 上で稼働させているプロダクトがいくつかあります それらは Buildpacks を利用してほぼゼロコンフィグでイメージを作成しているものが多いです 過去にも Buildpacks に関連した記事をいくつか随筆しているのでよろしければご覧ください Next.js による Docker ...

Spring Cloud Gateway の CORS 設定を Vercel の自動生成 URL に対応させる

下記の環境に対応させるために Spring Cloud Gateway の設定の調整をした時のメモです フロントエンドアプリケーションは Vercel にデプロイ API サーバの前段に CORS が有効な Gateway サーバがいる フロントエンドアプリケーションと Gateway サーバのドメインが異なる CORS の設定は application.yml で指定することが可能です Spring Cloud Gateway のドキュメントとしてはサンプルとして下記の書き方が紹介されています CORS Configuration - Spring Cloud Gateway spring:...

Spring + Testcontainers によるテストと ContextCustomizerFactory による効率化

参考記事 Faster tests by reusing Testcontainers in Spring Boot Testcontainers の活用 Testcontainers は Java (JUnit) でテストを書く際に Docker コンテナを用いて実際の環境に近い Integration Tests を実現することのできる強力なソリューションです タグバンガーズでも以下の事例で実際に Testcontainers を利用してテストを作成しているプロジェクトがあります AWS S3 に対して操作を行うプロジェクトで LocalStack Module を用いて AWS SDK ...

jackson の @JsonCreator を使ったデシリアライズについて調べたこと

@JsonCreator 使っているプロジェクトはいくつかあるのですが、時々デシリアライズ部分でエラーが発生し、Lombok とも合わせると問題がどこなのかわからなくなったりするので調べてみました。 かなり消化不良なまとめですが、@JsonCreator 使う時は jackson がよしなにやろうとしているロジックやパターンが複雑なので、明示的にこちらからどういう方法でデシリアライズしてねという指定をしておいた方が、デシリアライズ時にエラーに悩むことが少なくなりそうという感じでした。 最新の jackson は現時点で 2.13.x で、今後 3.x が出てきますが、2.12.6 バージョンで...

Spring + React の Web アプリを Kotlin のみで作成する

先月から Tagbangers にジョインした生粋のハマっ子こと JK です(元インターン生) 私の好きなプログラミング言語の1つは Kotlin です Kotlin は JetBrains 社が開発した言語で主に Android アプリ開発で使用できる言語として有名です JK ≒ JetBrains Kotlin 今回はそんな Kotlin を用いて簡単な Web アプリを1から作成していこうと思います! GitHub 今回作成するプロジェクトの完成形は下記のリポジトリにプッシュしています koyama-tagbangers/kotlin-react-spring-sample What's...

Keycloak と Spring Boot アプリケーションで OpenID Connect の Authorization Code Flow を確認する

はじめに 本日は、以下のようなシーケンスで OpenID Connect の Authorization Code Flow を確認していこうと思います。 開発済みのプロジェクトのいくつかで Keycloak,OpenID Connect, Spring Cloud Gateway が使われており順に理解していく必要を感じたため、今回は基本的な構成から学んでいきたいと思います。 UserInfo Endpoint(Spring Boot) および IdP(docker container として起動) のサンプルコードは以下のリポジトリに用意しました! https://github.com/k...

AWS Cloud9 が使えるものなのか試したい

なぜ Cloud IDE を使いたいのか。 コロナによる自粛のため、タグバンガーズでもリモートワークを行っています。 リモートワークでの問題の一つにコミュニケーションの取りづらさがあります。 隣にいるのとはやはり違いますよね。。 そこじゃなくて”ここ”みたいなことを画面越しにやるのは結構面倒です。 共同編集が出来る Cloud IDE であればその問題も多少軽減されるのでは? ということで触ってみて使えるのかどうか見てみましょう。 AWS Cloud9 Cloud9 は東京リージョンにも対応しています。 2019年4月には対応していたので1年以上前ですね。 Getting Started があ...