Java 5

[Java] @RestController와 HttpMassageConverter

1. @RestController란?@Controller + @ResponseBody를 합친 어노테이션으로, JSON API 개발에 최적화되어 있습니다. 1-1. 만들어진 이유기존 방식의 문제점(코드 중복)@Controller // View(JSP, Thymeleaf) 반환용@ResponseBody // JSON 반환용 ← 매번 붙여야 함 ❌@GetMapping("/api/users")public List getUsers() { return userService.findAll();} @RestController로 중복코드 해결@RestController // = @Controller + @ResponseBody ✅@GetMapping("/api/users")public List getUsers..

Java 2026.01.04

[Java] AOP

1. AOP란?AOP(Aspect Oriented Programming = 관점 지향 프로그래밍)는 기능을 '핵심 로직'과 '공통 기능'으로 분리하여 관리하는 프로그래밍 패러다임입니다. '관점'이라는 추상적인 단어는 실무적으로 다음과 같이 이해할 수 있습니다. Aspect(관점 → 공통 관심사): 여러 모듈에서 공통적으로 필요로 하는 부가 기능 그 자체를 의미합니다.(예: 로깅, 보안 검사, 트랜잭션 관리) 핵심 관점(Primary Concern): 로그인, 검색, 게시판 서비스는 개별 구분이 되어 있고 비즈니스의 본질적인 기능을 담당하는 영역입니다. 상 → 하로 실행되는 독립적인 수직 구조를 가집니다.횡단 관점(Cross-cutting Concern): 로깅(Logging), 보안(Security),..

Java 2025.12.24

[Java] Stream - map과 flatMap

1. Map 이란?map은 자바의 stream객체에서만 사용할 수 있는 중간 연산 메서드이다.stream은 각 요소를 순차적으로 접근하며, map은 각 요소마다 1:1로 함수형 인터페이스 Function에 정의한 함수를 적용하여 return한다.Function란: 매개변수 1개(T 타입), 리턴 1개(R 타입)의 함수형 인터페이스이다.map이 반환하는 것은 새로운 Stream이 되며, 다음 연산으로 사용된다.아래는 예시 코드이다.List list = List.of("apple", "banana", "cat");// 람다식List intList1 = list.stream() .map(str -> str.length()) .toList();// 메서드 참조형식List intList2..

Java 2025.11.26

[Java] 싱글톤 패턴

1. 싱글톤이란?특정 클래스의 인스턴스(객체)가 애플리케이션 전체에서 오직 하나만 생성되도록 보장하는 디자인 패턴.생성자를 private으로 선언해서 외부에서 객체를 직접 만들 수 없도록 막음클래스 내에 static 변수로 유일 객체를 저장함static 메서드를 통해 전역에서 동일 객체에 접근함 싱글톤의 목적데이터베이스 커넥션 풀, 설정 객체 등 시스템 자원을 공유해야 하는 상황에서 객체가 여러 번 생성되는 것을 방지하고 하나만 생성해 메모리 낭비를 막음전역적으로 일관된 객체를 사용할 수 있음 코드로 같이 알아보자아래와 같은 싱글톤 패턴의 예시 코드가 있다. 하나 씩 같이 보자class Singleton { private static Singleton instance = new Singleton()..

Java 2025.11.18

[Java/Set] HashSet, LinkedHashSet, TreeSet

1. SET자료의 중복을 허용하지 않는다.- 동일 값을 추가시 새로운 값을 무시하고 기존 값을 유지한다.Set set = Set.of(10, 30, 15, 40, 25, 55, 10, 30);System.out.println(set);// 결과/*Exception in thread "main" java.lang.IllegalArgumentException: duplicate element: 10 at java.base/java.util.ImmutableCollections$SetN.(ImmutableCollections.java:918) at java.base/java.util.Set.of(Set.java:612) at Main.main(Main.java:5)*/IllegalArgumen..

Java 2025.10.21