Hutool 활용 가이드와 주요 기능 소개

Hutool은 Java 개발에서 자주 사용되는 작업을 단순화하기 위해 설계된 오픈 소스 라이브러리입니다. 이 라이브러리는 문자열 처리, 컬렉션 조작, IO, 날짜 및 시간 관리, 암호화, JSON, HTTP 통신, 파일 압축 등 다양한 기능을 제공하는 툴 클래스들을 포함하고 있습니다. Hutool은 제3자 프레임워크에 의존하지 않으며, 핵심 모듈의 크기는 약 1MB로 매우 가볍고 쉽게 통합할 수 있어 중소 규모 프로젝트나 빠른 개발 환경에 적합합니다.

기본 기능

  • 개발 간소화: 반복적인 작업을 캡슐화하여 코드 재사용성을 증가시킵니다.
  • 코드 가독성 향상: 메서드 명명이 직관적이고 체인 호출 방식으로 사용이 용이합니다.
  • 제3자 의존성 감소: 핵심 모듈은 외부 라이브러리에 의존하지 않습니다.
  • 강력한 호환성: Java 8 이상 버전과 호환되며, 다양한 JDK 버전에 최적화되어 있습니다.
  • 풍부한 문서: 상세한 공식 문서와 예제를 제공합니다.

주요 모듈 및 기능

모듈 이름설명
`core`핵심 모듈로, 문자열, 컬렉션, 날짜, IO, 리플렉션, 암호화, 시스템 정보 등의 도구를 포함합니다.
`crypto`AES, RSA, SHA, MD5, Base64, 해싱 등을 지원하는 암호화 도구입니다.
`db`JDBC 작업을 간단하게 처리하며, `Db`, `SqlRunner` 클래스를 통해 원시 SQL 작성 없이 데이터베이스 작업을 수행할 수 있습니다.
`http`GET/POST/PUT/DELETE 요청을 캡슐화하며, 업로드, 쿠키, 헤더, 프록시 등을 지원합니다.
`json``org.json` 기반의 JSON 처리 도구로, `JSONObject`, `JSONArray` 등을 편리하게 다룰 수 있습니다.
`log`Log4j, Logback, SLF4J 등을 지원하는 로깅 인터페이스를 제공합니다.
`cache`LRU, TTL 등의 구현체를 포함하는 캐시 인터페이스를 제공합니다.
`extra`이메일, 템플릿 엔진(Velocity), QR 코드, PDF, Excel 등 고급 기능을 포함합니다.

주요 도구 클래스 사용 예제

1. 문자열 처리: `StringUtil`

import cn.hutool.core.util.StringUtil;

public class StringUtilDemo {
    public static void main(String[] args) {
        boolean isEmpty = StringUtil.isEmpty("   "); // true
        System.out.println("문자열 비어있음: " + isEmpty);

        boolean isNotEmpty = StringUtil.isNotEmpty("Hello"); // true
        System.out.println("문자열 비어있지 않음: " + isNotEmpty);

        String subStr = StringUtil.sub("HelloWorld", 2, 5); // "llo"
        System.out.println("부분 문자열: " + subStr);

        String formatted = StringUtil.format("이름: {}, 나이: {}", "김철수", 30);
        System.out.println("형식화된 문자열: " + formatted);

        String camelCase = StringUtil.toCamelCase("user_name"); // "userName"
        System.out.println("언더바에서 카멜케이스 변환: " + camelCase);
    }
}

2. 컬렉션 처리: `CollectionTool`

import cn.hutool.core.collection.CollectionTool;
import java.util.*;

public class CollectionToolDemo {
    public static void main(String[] args) {
        List<String> list = CollectionTool.newArrayList("사과", "바나나", "오렌지");
        System.out.println("리스트 생성: " + list);

        boolean isEmpty = CollectionTool.isEmpty(list); // false
        System.out.println("리스트 비어있음: " + isEmpty);

        String joined = CollectionTool.join(",", list); // "사과,바나나,오렌지"
        System.out.println("조인된 문자열: " + joined);
    }
}

3. 날짜 처리: `DateTimeUtil`

import cn.hutool.core.date.DateTimeUtil;
import java.util.Date;

public class DateTimeUtilDemo {
    public static void main(String[] args) {
        Date now = new Date();
        System.out.println("현재 시간: " + now);

        String formattedDate = DateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss");
        System.out.println("형식화된 날짜: " + formattedDate);

        Date parsedDate = DateTimeUtil.parse("2025-01-01 12:30:00", "yyyy-MM-dd HH:mm:ss");
        System.out.println("파싱된 날짜: " + parsedDate);
    }
}

4. 파일 및 IO 처리: `FileTool`

import cn.hutool.core.io.FileTool;
import java.io.File;

public class FileToolDemo {
    public static void main(String[] args) {
        File tempFile = FileTool.tempFile();
        System.out.println("임시 파일 경로: " + tempFile.getAbsolutePath());

        boolean exists = FileTool.exist("C:/test.txt");
        System.out.println("파일 존재 여부: " + exists);

        String content = FileTool.readString("C:/test.txt", "UTF-8");
        System.out.println("파일 내용: " + content);
    }
}

5. JSON 처리: `JsonTool`

import cn.hutool.json.JsonTool;
import java.util.HashMap;
import java.util.Map;

public class JsonToolDemo {
    public static void main(String[] args) {
        Map user = new HashMap<>();
        user.put("name", "박영희");
        user.put("age", 27);

        String jsonStr = JsonTool.toJsonStr(user);
        System.out.println("JSON 문자열 변환: " + jsonStr);

        Map parsedMap = JsonTool.parseObj(jsonStr);
        System.out.println("JSON 파싱 후 맵 값: " + parsedMap.get("name"));
    }
}

6. HTTP 요청: `HttpTool`

import cn.hutool.http.HttpTool;
import cn.hutool.http.Method;
import cn.hutool.http.Request;
import cn.hutool.http.Response;

public class HttpToolDemo {
    public static void main(String[] args) {
        String response = HttpTool.get("https://api.example.com/data");
        System.out.println("GET 응답: " + response);

        Request request = new Request(Method.POST, "https://api.example.com/data")
                .addHeader("Content-Type", "application/json")
                .body("{\"name\":\"홍길동\"}");
        Response resp = request.execute();
        System.out.println("POST 응답 상태: " + resp.getStatus());
    }
}

태그: Hutool java api JSON HTTP

8월 18일 17:23에 게시됨