Java16 [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] Equals & HashCode == : 동일성 비교(객체 인스턴스의 주소 값을 비교) equals() : 동등성 비교(객체 내부의 값을 비교) hashCode() : 객체의 메모리 번지를 이용해서 해시코드를 만들고 그 값을 리턴(객체마다 다른 값을 가지고 있다.) hashCode()를 사용하는 이유 중 하나는, 객체를 비교할 때 드는 비용을 낮추기 위함이다. 자바에서 2개의 객체가 같은지 비교할 때 equals()를 사용하는데, 여러 객체를 비교할 때 equals()를 사용하면 Integer를 비교하는 것에 비해 많은 시간이 소요된다. hashCode() 메소드를 실행하여 리턴된 해시코드 값이 다르면 다른 객체로 판단하고, 해시코드 값이 같으면 equals() 메소드로 두 객체를 다시 비교한다. 즉, 여러 객체의 동등성 비교를 할 때.. 2022. 11. 25. 이전 1 2 다음