Spring Bootのユーティリティオブジェクトとは?便利な機能を徹底解説!

こんにちは。ゆうせいです。
Spring Bootを使っていると、コードの中でよく使われる処理を共通化したくなることがありますよね。
たとえば、「文字列を加工する」「日付をフォーマットする」「ログを一元管理する」といった処理は、どのアプリケーションでも頻繁に登場します。
こうした 再利用可能な処理をひとつのクラスにまとめたものが、ユーティリティオブジェクト(Utility Object) です!

今回は、Spring Bootでよく使われるユーティリティクラスについて解説していきます。
「どんなユーティリティがあるの?」「自作するならどうすればいい?」といった疑問にも答えていきますよ!


1. ユーティリティオブジェクトとは?

ユーティリティオブジェクト(Utility Object)とは、特定の機能を提供する 静的メソッドを集めたクラス のことです。
通常、インスタンス化せずにそのまま呼び出して使います。

主な特徴

  • インスタンスを作成しない(newしない)
    → すべてのメソッドが static で定義されている
  • 共通処理をまとめる
    → 例: 文字列操作、日付フォーマット、データ変換など
  • Spring Bootの依存関係に影響されない
    → DI(Dependency Injection)を使わず、どこでも呼び出せる

代表的なユーティリティクラスの例

JavaやSpring Bootには、すでに多くの便利なユーティリティクラスが用意されています。

クラス名機能
StringUtils (Apache Commons)文字列操作
ObjectUtils (Spring)オブジェクトのnullチェックなど
DateTimeFormatter (Java)日付フォーマット
FileUtils (Apache Commons)ファイル操作
CollectionUtils (Spring)コレクションの操作

2. Spring Bootで使える便利なユーティリティクラス

① 文字列操作 (StringUtils)

StringUtils は、Apache Commons Langが提供するクラスで、文字列処理を簡単にできます。

主な機能

  • isEmpty(): 空文字やnullを判定
  • capitalize(): 先頭の文字を大文字にする
  • join(): 配列やリストを結合

例: 文字列が空かどうかを判定

import org.apache.commons.lang3.StringUtils;

public class Example {
    public static void main(String[] args) {
        System.out.println(StringUtils.isEmpty(""));  // true
        System.out.println(StringUtils.isEmpty("Hello"));  // false
    }
}


② コレクション操作 (CollectionUtils)

リストやセットなどのコレクションを便利に扱えるSpringのクラスです。

主な機能

  • isEmpty(): コレクションが空かどうかを判定
  • mergeArrayIntoCollection(): 配列をリストに追加
  • findFirstMatch(): 指定した要素が含まれているか検索

例: リストが空かどうかを判定

import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Arrays;

public class Example {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob");
        System.out.println(CollectionUtils.isEmpty(names));  // false
    }
}


③ オブジェクトのnullチェック (ObjectUtils)

オブジェクトが null かどうかを判定したり、デフォルト値を設定できます。

例: nullチェックとデフォルト値設定

import org.springframework.util.ObjectUtils;

public class Example {
    public static void main(String[] args) {
        String name = null;
        System.out.println(ObjectUtils.defaultIfNull(name, "Default Name"));  // "Default Name"
    }
}


④ 日付フォーマット (DateTimeFormatter)

Javaの DateTimeFormatter を使えば、日付をフォーマットしたりパースできます。

例: 日付を指定フォーマットに変換

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Example {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        System.out.println(today.format(formatter));  // 2025/03/17
    }
}


3. 自作ユーティリティクラスの作り方

「Spring Bootに用意されていない機能を自分で作りたい!」
そんなときは、独自のユーティリティクラスを作成できます。

例: 数値を3桁ごとにカンマ区切りにするユーティリティ

import java.text.NumberFormat;
import java.util.Locale;

public class NumberUtils {
    
    // インスタンス化禁止
    private NumberUtils() {}

    // 数値をカンマ区切りの文字列に変換
    public static String formatWithCommas(int number) {
        NumberFormat formatter = NumberFormat.getInstance(Locale.US);
        return formatter.format(number);
    }
}

使い方

public class Example {
    public static void main(String[] args) {
        System.out.println(NumberUtils.formatWithCommas(1000000));  // "1,000,000"
    }
}


4. ユーティリティクラスのメリット・デメリット

メリットデメリット
コードの再利用性が高まるstatic メソッドの乱用はテストしにくい
どこからでも呼び出せるDI(依存性注入)が使えないため、モックが難しい
メモリ消費が少ない拡張性が低い(継承できない)

5. まとめ

Spring Bootには、さまざまなユーティリティクラスが用意されており、
開発を効率化するために積極的に活用できます。

ポイント

  • Spring Bootの標準ユーティリティを活用する
    • StringUtils, CollectionUtils, ObjectUtils など
  • 日付や数値のフォーマットも簡単にできる
    • DateTimeFormatter, NumberFormat など
  • 独自のユーティリティクラスを作成する場合
    • static メソッドを使い、インスタンス化を禁止する
    • 共通処理をまとめる

「この処理、毎回書くの面倒だな…」と思ったら、ユーティリティクラスにまとめるとスッキリします!
どんどん活用して、効率よくSpring Bootの開発を進めていきましょう!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

春のロゴ アイコン by Icons8

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。