본문 바로가기

Java70

[Java] API 서버 개발 기본 Spring으로 API 서버를 개발할 때 가장 중요한 건 딱 하나이다.이 서버는 "화면(View)"을 반환하는 서버인가?아니면 "데이터(JSON)"를 반환하는 서버인가?요즘 대부분의 시스템은 프론트엔드(React, Vue 등)와 분리된 구조이기 때문에Spring 서버는 거의 항상 JSON 데이터를 반환하는 API 서버 역할을 한다.이 글에서는 API 서버 개발에 필요한 핵심 개념만 빠르게 정리한다.※ @Controller vs @RestController API 서버라면 → 거의 무조건 @RestController 사용 ▶ @Controller@Controller@GetMapping("/home")public String home() { return "home";}"home"이라는 데이터를 반환하는.. 2026. 5. 5.
[Java] 다국어 이름 마스킹 소스 코드 ▶ 한글 이름입력값출력값김*홍길홍*홍길동홍*동이순신장군이****홍 길동홍 *동이 승 엽이 * * ▶ 영문 이름입력값출력값A*JoJ*TomT*mAliceA****John SmithJ*** S****Mary Jane WatsonM*** J*** W***** ▶ 한문 이름입력값출력값李*張偉張*王小明王*明諸葛 亮諸* * ▶ 베트남어 이름입력값출력값AnA*MinhM***NguyễnN*****Trần Văn NamT*** V** N**Lê Thị Thu HươngL* T** T** H**** ▶ Java 다국어 이름 마스킹 소스 코드/** * 사용자 이름 마스킹 * 공백이 포함된 이름은 단어 단위로 분리하여 마스킹 * 공백이 없는 이름은 길이에 따라 마스킹 규칙 적용 * null 또는 공백만 있는 문자열은 그대로 .. 2025. 12. 15.
[Java] JDK 다운로드 (8, 11, 17, 21) ※ Oracle (로그인 필요)▶ JDK 8https://www.oracle.com/kr/java/technologies/downloads/#java8▶ JDK 11https://www.oracle.com/kr/java/technologies/downloads/#java11▶ JDK 17https://www.oracle.com/kr/java/technologies/downloads/#java17▶ JDK 21https://www.oracle.com/kr/java/technologies/downloads/#java21 ※ Eclipse Temurin (Open JDK)▶ JDK 8https://adoptium.net/temurin/releases?version=8&os=any&arch=any▶ JDK 11.. 2025. 12. 5.
[Java] 로그 사용법 정리 (DEBUG / INFO / WARN / ERROR) ※ DEBUG// DEBUG : 디버깅용 상세 정보 출력// 변수 값, 조건문 흐름, 내부 로직 확인이 필요할 때int offsetLag = 10;log.debug("offsetLag value = {}", offsetLag); 2025-11-27 10:15:30.100 DEBUG [sampleThread] sample.TestClass : offsetLag value = 10 ※ INFO // INFO : 정상적인 서비스 흐름 기록// 작업 시작/종료, 정상적인 이벤트 발생 시, 상태 로그 남길 때int metricCount = metrics.size();log.info("Metric collection started. count={}", metricCount); 2025-11-27 10:15:30.1.. 2025. 11. 27.
[Java] JPA vs Spring Data JPA ※ JPA vs Spring Data JPA// 순수 JPAOptional m1 = memberJpaRepository.findById(1L); // 1L은 ID가 1, 타입은 Long을 의미List actives1 = memberJpaRepository.findAllByStatus(Member.Status.ACTIVE);// Spring Data JPAMember m2 = memberRepository.findById(1L) // 1L은 ID가 1, 타입은 Long을 의미 .orElseThrow(() -> new IllegalArgumentException("not found"));List actives2 = memberRepository.findAllByStatus(Member.. 2025. 8. 9.
[Java] javax.annotation.Resource 오류 1. https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api 접속 후 버전 선택   2. Maven 또는 Gradle에 맞게 dependency 추가 3. Update Project 2025. 1. 17.
[Java] Date & LocalDate & LocalDateTime 변수를 yyyyMMdd 문자열로 변환 // Date 변수 date1 -> yyyyMMdd 문자열로 변환SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");String strDate1 = sdf.format(date1);// LocalDate 변수 date2 -> yyyyMMdd 문자열로 변환String strDate2 = date2.format(DateTimeFormatter.ofPattern("yyyyMMdd"));// LocalDateTime 변수 date3 -> yyyyMMdd 문자열로 변환String strDate3 = date3.format(DateTimeFormatter.ofPattern("yyyyMMdd")); 2024. 9. 13.
[Java] 특정 문자열 및 빈 값 체크 // Java 특정 문자열 및 빈 값 체크String str1 = null; // str1 == null로 체크String str2 = "A"; // "A".equals(str2)로 체크String str3 = ""; // "".equals(str3)로 체크// (Java 6 이상)String str4 = ""; // str4.isEmpty()로 체크String str5 = ""; // str5.trim().isEmpty()로 체크String str6 = " "; // str6.trim().isEmpty()로 체크String str7 = " "; // str7.trim().isEmpty()로 체크// (Java 11 이상)String str8 = ""; // str8.isBlank()로 .. 2024. 8. 29.
[Java] 프로그래머스 [Level-2] 요격 시스템 import java.util.Arrays; public class Solution { // 요격 시스템 public static int solution(int[][] targets) { int answer = 0; // 개구간 (s, e)로 표현되는 폭격 미사일을 s와 e에서 발사하는 요격 미사일로는 요격할 수 없기 때문에 각각의 원소에 10을 곱한 후 // 첫 번째 원소에서는 +1을, 두 번째 원소에서는 -1을 하여 폐구간 [r, f]을 만든 후 [Java] 프로그래머스 [Level-3] 단속카메라 문제처럼 풀도록 한다. int[][] tempTargets = new int[targets.length][targets[0].length]; for (int i = 0; i < targets.length;.. 2023. 9. 6.