Spring Securityでログイン後に任意の処理を行なってからログイン前にアクセスしたページにリダイレクトする

こんにちは、エキサイト株式会社の平石です。 今回は、Spring Securityでログイン後に任意の処理を行なってからログイン前にアクセスしたページにリダイレクトする方法をご紹介します。 はじめに 環境 実現方法 終わりに はじめに Spring SecurityはSpringで…

AWS Summit Japan 2日目にオフライン参加してきました

AWS

こんにちは、エキサイト株式会社の平石です。 2024年6月20日(木)、21日(金)の二日間に渡り開催された AWS Summit Japan の2日目に参加しました。 会場 セッション 基調講演 AWS NoSQL コスト削減大全 生成 AI の発展的な活用 展示 おまけ 終わりに 会場 …

OpenAPI Generatorで生成したAPIクライアントをコンパイルせずに利用する

こんにちは、エキサイト株式会社の平石です。 今回は、OpenAPI Generatorで自動生成したAPIクライアントをコンパイルせずに利用する方法をご紹介します。 はじめに 環境 手順 1. これまでの方法で一旦生成する 2. 生成したファイルを実行するために必要な依…

Gradleマルチプロジェクトでは、Mavenリポジトリは絶対パスで指定すべきだった話

こんにちは、エキサイト株式会社の平石です。 今回は、Gradleでマルチプロジェクトを構成している状態で、MavenのLocalRepositoryを指定する際にハマった内容を紹介します。 デフォルト以外のLocalRepository 今回は、repositoriesの設定で独自のRepository…

HTMXでリクエスト実行後にJavaScriptコードを実行する方法

こんにちは、エキサイト株式会社の平石です。 今回は、HTMXでhx-getやhx-postを使ってリクエストを実行した後に任意のJavaScriptコードを実行する方法をご紹介します。 はじめに HTMXでは、hx-getやhx-postを利用して、リクエストを実行することができます。…

Flywayを使ったマイグレーションで利用されるhistoryテーブルの名前を変更する

こんにちは、エキサイト株式会社の平石です。 私の担当するサービスでは、Spring Boot (Java)を利用していますが、ローカルではFlyway + MyBatis GeneratorでDB環境および、JavaからDBへの接続環境を構築しています。 その際、複数のデータベースに接続しよ…

MyBatis Generatorを利用して、Model(DTO)やMapperを自動生成する

こんにちは、エキサイト株式会社の平石です。 今回はMyBatis Generatorを利用して、ModelやMapperを自動生成する方法をご紹介します。 はじめに 導入 環境 実際にやってみる Javaプログラムから実行する方法 依存関係 設定ファイル PostgreSQLを使う際の補足…

OpenAPI Generatorを利用して自動生成したJavaのAPIクライアントをローカルリポジトリに保存する

こんにちは、エキサイト株式会社の平石です。 今回は、OpenAPI Generatorを利用して自動生成したJavaのAPIクライアントを独自のローカルリポジトリに保存する方法をご紹介します。 なお、今回の方法は例として「OpenAPI Generatorを利用して自動生成したJava…

LEFT JOINでハマった話

こんにちは、エキサイト株式会社の平石です。 今回は、初歩的な内容でありながら、SQLでLEFT JOINを利用した際にハマったことを記事にしたいと思います。 なお、本ブログのSQLはMySQL 8.2で動作確認をしています。 例 以下のような3つのテーブルがあるとしま…

Spring Bootで@CacheEvictを使ってキャッシュを削除する

こんにちは、エキサイト株式会社の平石です。 今回は、Spring Bootで一度作成したキャッシュをTTLが過ぎる前に明示的に削除する方法をご紹介します。 キャッシュを削除したいとき キャッシュという仕組みでは、DBなどの情報源にアクセスした結果を高速にアク…

SpringdocでAPIの情報を補足する際、リクエストパラメータには@Parameterを使うべきという話

こんにちは、エキサイト株式会社の平石です。 今回は、SpringdocでAPIのリクエストに対して、付与するアノテーションをご紹介します。 なお、今回のソースコードは以下の環境で動作確認をしています。 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2…

SpotBugsが可変オブジェクトでないものを可変オブジェクトと判定してしまう場合の対処法

こんにちは、エキサイト株式会社の平石です。 今回は、SpotBugsで可変でないオブジェクトが可変であると判定されてしまう問題に対処する方法をご紹介します。 はじめに SpotBugsは、Javaのプログラムの中のバグや脆弱性(につながると考えられるもの)を検知…

SpringBootでAWSのCredentialsを簡単に切り替える

こんにちは、エキサイト株式会社の平石です。 今回は、SpringBootでローカル環境からAWSサービスにアクセスする際にCredentialsを簡単に切り替える方法をご紹介します。 はじめに 準備 認証情報の設定 終わりに 参考文献 はじめに Spring Bootでローカル環境…

OpenAPI GeneratorでJavaのAPIクライアントを自動生成する

こんにちは、エキサイト株式会社の平石です。 今回は、OpenAPI Generatorを利用してJavaのAPIクライアントを自動生成する方法をご紹介します。 はじめに OpenAPI Generatorとは 準備 環境 使用するAPIドキュメント 依存関係の追加と設定を行う 実際に生成し…

OpenAPI仕様のYAMLファイルからDartコードを自動生成する際に、タグに日本語は使わない方が良いという話

こんにちは、エキサイト株式会社の平石です。 エキサイトホールディングス Advent Calendar 2023の22日目を担当いたします。 OpenAPI仕様に基づいてAPIの仕様を定義したYAMLファイルから、アプリ用のDartコードを自動生成する際に、タグの指定で注意すべき点…

Javaで整数型やbyte配列と16進表記の文字列との間の変換を行なう

こんにちは、エキサイト株式会社の平石です。エキサイトホールディングス Advent Calendar 2023の19日目を担当いたします。 今回は、Javaで整数型やbyte配列と16進表記の文字列との間の変換を行なう方法をご紹介します。 整数 → 16進表記 の変換 IntegerやLo…

FCMで直接トークンを指定してマルチキャストでプッシュメッセージを送信する

こんにちは、エキサイト株式会社の平石です。エキサイトホールディングス Advent Calendar 2023の12日目を担当いたします。 今回は、FCMで直接トークンを指定してマルチキャストでプッシュメッセージを送信する方法をご紹介します。 はじめに プッシュメッセ…

JavaのSpringBootでMyBatisを利用して複数のデータソースに接続する方法

こんにちは、エキサイト株式会社の平石です。エキサイトホールディングス Advent Calendar 2023の5日目を担当いたします。 今回はJavaのSpringBootでMyBatisを利用して、複数のデータソースに接続する方法をご紹介します。 はじめに 前提条件 問題設定 appli…

OpenAPIをSpring Bootで自動生成する場合に、リストや配列の情報を補完する方法

こんにちは、エキサイト株式会社の平石です。 こちらの記事で、Spring BootからOpenAPIのドキュメントを自動生成する方法について説明されています。 tech.excite.co.jp しかし、APIのレスポンスにListまたは配列の項目が存在していた場合に、アノテーション…

AWS CDKでMavenではなくGradleを使用する

こんにちは。 エキサイト株式会社で内定者アルバイトをしている平石です。 今回は、AWS CDKをGradleで使用できるようにしていきたいと思います。 前の記事 tech.excite.co.jp AWS CDKとMaven & Gradle AWS CDKのコードをJavaで作成するにあたって、 cdk init…

AWS CDKのテストをやってみる

こんにちは。 エキサイト株式会社で内定者アルバイトをしている平石です。 今回は、AWS CDKで正しくリソースが定義されているかをテストするための方法をご紹介します。 前の記事 tech.excite.co.jp 2種類のテスト AWS CDKは通常のプログラミング言語で記述…

AWS CDKでの開発の流れについてまとめてみた

こんにちは。 エキサイト株式会社で内定者アルバイトをしている平石です。 今回は、AWS CDKを使ってクラウドアプリケーションリソースを定義する流れを勉強しましたので、まとめてみたいと思います。 ※ この記事では全体の流れを軽く掴むことを目的としてい…

CDKの新機能であるcdk importを触ってみた

こんにちは。 エキサイト株式会社で内定者アルバイトをしている平石です。 今回はAWS CDKのv2.20.0(Release v2.20.0 · aws/aws-cdk · GitHub)でプレビューとなっているcdk importを使ってみようと思います。 前の記事 tech.excite.co.jp AWS CDKとは? AWS…

AWS CDKの基礎

こんにちは。 エキサイト株式会社で内定者アルバイトをしている平石です。 今回は、AWS CDKの基礎を勉強しましたので、まとめてみたいと思います。 前の記事 tech.excite.co.jp AWS CDKとは? 公式ドキュメント(オープンソースの開発フレームワーク - AWS …

AWS CDKでリソース作成 第9回: CloudFront編

こんにちは。 エキサイト株式会社で内定者アルバイトをしています。 今回も、実際のリソースの作成を行いたいと思います。第9回は、CloudFrontです。 前の記事 tech.excite.co.jp CloudFrontとは? CloudFrontはコンテンツ配信のためのリソースです。コンテ…

AWS CDKでリソース作成 第8回: CloudWatch編

こんにちは。 エキサイト株式会社で内定者アルバイトをしています。 今回も、実際のリソースの作成を行いたいと思います。第8回は、CloudWatchです。 前の記事 tech.excite.co.jp CloudWatchとは? CloudWatchはアプリケーションをモニタリングし、システム…

AWS CDKでリソース作成 第7回: OpenSearch編

こんにちは。 エキサイト株式会社で内定者アルバイトをしています。 今回も、実際のリソースの作成を行いたいと思います。第7回は、OpenSearchです。 前の記事 tech.excite.co.jp OpenSearchとは? OpenSearchは、高速検索が可能な全文検索・分析エンジンで…

AWS CDKでリソース作成 第6回: ElastiCache編

こんにちは。 エキサイト株式会社で内定者アルバイトをしています。 今回も、実際のリソースの作成を行いたいと思います。第6回は、ElastiCacheです。 前の記事 tech.excite.co.jp ElastiCacheとは? 名前にもある通り、インメモリキャッシングのためのリソ…

AWS CDKでリソース作成 第5回: Route 53編

こんにちは。 エキサイト株式会社で内定者アルバイトをしています。 今回も、実際のリソースの作成を行いたいと思います。第5回は、Route 53です。 前の記事 tech.excite.co.jp Route 53とは? AWSの公式ドキュメントによると、可用性と拡張性に優れたクラ…

AWS CDKでリソース作成 第4回: RDS編

こんにちは。 エキサイト株式会社で内定者アルバイトをしています。 今回も、実際のリソースの作成を行いたいと思います。第4回は、RDSです。 前回の記事 tech.excite.co.jp RDSとは? Amazon RDSはAmazon Relational Database Serviceの略で、クラウド内で…