Guava + Redis 二段階キャッシュユーティリティの実装
本稿では、GuavaローカルキャッシュとRedis分散キャッシュを組み合わせた二段階キャッシュユーティリティクラスを実装します。この設計は、データ読み取り頻度が高く書き込み頻度が低いシナリオに適しており、リスト型データを効率的にキャッシュするための汎用的なソリューションを提供します。
package com.example.cache.util;
import com.alibaba.fastjson.JSON;
imp ...
5月25日 18:28 投稿
Javaでアップロードされたファイルがディレクトリかどうかを判定する方法
Javaでアップロードされたファイルがディレクトリかどうかを判定する方法
概要
開発者として、初心者にJavaでファイルをアップロードし、それがディレクトリかどうかを判定する方法を教える必要があります。このプロセスには、ファイルアップロード、ファイルタイプの判定、パス処理などの知識が含まれます。以下では、全プロセスを詳細に説明し、各ステップで必要なことと ...
5月24日 07:05 投稿
Java JSONMap:複雑なJSON構造を一行のコードで安全にアクセスする新手法
1. プロジェクト概要:Java JSON処理の煩雑さから解放されるツール
Java開発者として、JSONデータを扱う際にnullチェック、型確認、ネストされたgetメソッドの羅列を書き続けているなら、その「骨の折れる作業」の苦しみを経験したことがあるでしょう。特にマイクロサービス、フロントエンドとバックエンドの分離、AI支援開発が主流となった今日、私たちが扱うデータ構造は ...
5月24日 07:00 投稿
Spring BootでのExcelエクスポート時に発生するStream is closedエラーの原因と対処法
Spring BootでのExcelエクスポート時に発生するStream is closedエラーの原因と対処法
最近、バックエンド管理システムのデータエクスポート機能を実装する際、Spring BootとApache POIを使用したが、デバッグ中に予期しないエラーに直面した。ファイルのダウンロードは正常に機能し、ブラウザでも開けるものの、コンソールには「java.io.IOException: UT010029: Stream is ...
5月24日 06:27 投稿
外部に公開してはならないAPI endpointの対処法
システム開発において、特定のAPIを外部ネットワークに公開せず、内部サービス間でのみ利用できるようにしたい場合、代表的な3つのアプローチが存在する。
内部向け・外部向けでマイクロサービスを分離する
ゲートウェイとRedisを活用したホワイトリスト方式
ゲートウェイとAOPによるリクエスト元判定
以下で、それぞれの方案の特徴と実装方法について詳しく解説する。
1 ...
5月23日 20:00 投稿
Spring BootとVue.jsで構築する漢方薬膳サービスシステム
1. システム概要
本システムは、Java言語、Spring Bootフレームワークをバックエンドに、Vue.jsをフロントエンドに採用し、MySQLデータベースを用いてデータ管理を行うWebサービスプラットフォームです。ユーザーフレンドリーなインターフェースはAJAX技術を活用して構築されています。開発はIntelliJ IDEAなどの統合開発環境で行われ、Tomcatサーバーを通じて情報のやり取 ...
5月23日 02:59 投稿
Spring Bootを使用した分散ロックの実装
Spring Bootを使用した分散ロックの実装
1. 分散ロックとは何か?
分散システムでは、複数のノードが並行してタスクを実行するため、データの一貫性を保証し、リソースの競合を避けるために共有リソースへのアクセスを制御するメカニズムが必要です。分散ロックは、分散環境における並行アクセスを制御するための仕組みで、同一時刻に一つのノードのみがロックを取得できる ...
5月22日 21:29 投稿
Spring Bootで@RequestBodyがnullになる問題:LombokとJacksonの命名規則の衝突を解決する
Spring Bootを使ったJava Web開発において、JSONパラメータを@RequestBodyで受け取る際に、特定のフィールドだけがnullになる問題はよく発生します。本記事では、Lombokの@Dataアノテーションで生成したエンティティクラスにおいて、先頭が小文字、2文字目が大文字のフィールド(例:xIndex)で起きるパラメータマッピング失敗の原因と解決策を詳しく解説します。
1. 問題 ...
5月20日 11:45 投稿
RabbitMQ入門:基本概念からSpring Bootによる実践的メッセージングまで
コアコンセプト
Broker: メッセージの受信と配信を担うサーバーアプリケーション。RabbitMQサーバー自体を指す。
Connection: クライアント(パブリッシャー/コンシューマー)とBroker間のTCP接続。
Channel: Connection内部に確立される論理的な接続。高負荷時に毎回TCP接続を確立するオーバーヘッドを避けるため、スレッドごとにChannelを分けて通信を行う。AMQPプロトコ ...
5月20日 01:41 投稿
Spring Bootのリアクティブプログラミング:FluxとMonoのデータ出力方法
Spring Bootのリアクティブプログラミングにおいて、Fluxは非同期データストリームを表します。その内容を出力するには、subscribe()メソッドでストリームを購読する必要があります。以下に、Fluxの内容を出力する主要な方法をいくつか紹介します。
1. subscribe()を使用した内容の出力
subscribe()はFluxデータストリームを実行させる最も基本的な方法です。データ、エラ ...
5月20日 00:33 投稿