Java/Basic 11

로깅 프레임워크 선택

로깅은 단순히 디버깅을 위한 도구가 아닙니다. 잘 설계된 로깅 시스템은 시스템 상태를 실시간으로 모니터링하고, 성능을 추적하며, 잠재적인 문제를 조기에 발견하는 데 중요한 역할을 합니다. Java 애플리케이션에서 로깅을 효율적으로 처리하기 위해선 적합한 로깅 프레임워크를 선택하고, 로그 데이터를 효과적으로 관리할 수 있는 시스템을 구축하는 것이 중요합니다. 로깅 프레임워크 선택1. SLF4J (Simple Logging Facade for Java)SLF4J는 Java 애플리케이션에서 로그를 추상화할 수 있는 API로, 다양한 로깅 프레임워크(Logback, Log4j 등)를 추상화하여 제공합니다. SLF4J 자체는 로그를 처리하지 않지만, 특정 로깅 구현체를 선택하여 로그 처리 작업을 위임할 수 있습니..

Java/Basic 2025.03.25

WebFlux SSE(Server-Sent Events) 사용 이유, 장단점 및 예시

최근 실시간 웹 애플리케이션의 중요성이 증가하면서, Spring의 WebFlux와 **Server-Sent Events(SSE)**가 많은 주목을 받고 있습니다. 이번 글에서는 WebFlux와 SSE의 특징과 사용 이유를 명확히 이해하고 장단점 및 실전 예제를 통해 알아보겠습니다.📌 WebFlux와 SSE란?WebFluxSpring의 리액티브 웹 프레임워크로, 비동기(Asynchronous), 논블로킹(Non-blocking) 방식의 요청 처리를 지원하여 동시성과 확장성을 극대화한 웹 애플리케이션을 개발할 수 있게 합니다.Server-Sent Events(SSE)클라이언트와 서버 간 단방향으로 실시간 이벤트 데이터를 전달할 수 있는 웹 표준 기술입니다. 주로 서버가 클라이언트로 계속해서 데이터를 실시간..

Java/Basic 2025.03.24

Spring vs. NestJS 상세 비교

🌿 Spring vs. NestJS 상세 비교비교 항목🌱 Spring🐱 NestJS언어 및 플랫폼Java, JVM 기반 프레임워크TypeScript(JavaScript 가능), Node.js 기반 프레임워크아키텍처 스타일MVC, 계층형 구조 중심(Layered, Service-Repository 등)모듈식 구조, 의존성 주입(DI), MVC/DDD 가능러닝 커브다소 높음 (Java, 스프링 생태계 이해 필요)상대적으로 낮음 (JavaScript 생태계, Angular 유사)생산성생산성 매우 높음 (Spring Boot로 초기 설정 단순화, 자동설정 및 스타터 제공)생산성 높음 (CLI로 빠른 프로젝트 생성 및 보일러플레이트 코드 자동 생성)성능JVM 기반으로 뛰어난 성능 및 안정성Node.js 비동..

Java/Basic 2025.03.24

Filter(필터)란?

필터(Filter)는 웹 애플리케이션에서 클라이언트의 요청(request)과 서버의 응답(response)이 서블릿이나 컨트롤러에 도달하기 전과 후에 미리 처리하는 기능을 의미합니다.즉, Servlet 요청과 응답을 가로채어 원하는 작업(인증, 권한 체크, 로깅, 인코딩 등)을 수행할 수 있는 유용한 기능입니다.필터의 가장 큰 특징은 서블릿이나 컨트롤러를 수정하지 않고도 전체 요청 흐름을 관리할 수 있다는 것입니다.⚙️ Filter의 동작 과정일반적인 필터의 처리 과정은 아래와 같습니다.클라이언트 요청 ▶️ 필터 ▶️ 서블릿(컨트롤러) ▶️ 필터 ▶️ 클라이언트 응답즉, 요청 시와 응답 시 양방향에서 작동할 수 있습니다.✅ Filter의 주요 용도요청과 응답의 인코딩 설정인증 및 권한 검사로깅 및 요청/..

Java/Basic 2025.03.24

HttpServletResponse와 getOutputStream() 정리

Java 웹 애플리케이션 개발 시 클라이언트에 데이터를 전달하기 위해 자주 사용하는 객체가 바로 HttpServletResponse입니다. 그중에서도 특히 파일 다운로드 또는 바이너리 데이터 전송 시 자주 사용하는 메소드가 getOutputStream()입니다.이 두 개념을 명확히 이해하고 활용하는 방법을 살펴보겠습니다.📌 1. HttpServletResponse란?HttpServletResponse는 서블릿(Servlet)이 HTTP 요청을 처리한 뒤 클라이언트로 응답(response)을 보내기 위한 객체입니다. 주로 아래와 같은 작업을 수행합니다.응답 헤더(Header) 설정: 컨텐츠 타입, 캐싱, 리다이렉션 등상태 코드(Status Code) 설정: (200, 404, 500 등)응답 본문(Res..

Java/Basic 2025.03.24

Java 11 vs 17 vs 21: 주요 변화와 코드로 살펴보기

🚀 Java 11 vs 17 vs 21: 주요 변화와 코드로 살펴보기자바(Java)는 지속적으로 새로운 기능과 성능 개선을 선보이며 발전하고 있습니다. 이번 글에서는 Java 11, Java 17, 그리고 최신 버전 Java 21의 핵심 기능을 간단한 코드 예제와 함께 비교해보겠습니다.📌 Java 11 (LTS)Java 11은 현재 가장 널리 쓰이는 LTS(Long-Term Support) 버전입니다.🔑 주요 특징var 키워드 활용 확장HttpClient API 정식 도입Lambda 표현식의 간결화📗 코드 예시: HttpClient 사용하기import java.net.http.*;import java.net.URI;public class Java11HttpClientExample { publ..

Java/Basic 2025.03.24

Spring boot vs Nestjs

Spring bootSpring Boot의 장점자바 개발자들에게 친숙한 생태계: Spring Boot는 자바 기반으로 개발되었으며, Java 생태계의 다양한 라이브러리와 도구를 활용할 수 있습니다. Java에 대한 다양한 자료와 커뮤니티 지원이 있어 개발자들이 쉽게 접근하고 익힐 수 있습니다.강력한 생산성:Spring Boot는 컨벤션 오버 구성(Convention over Configuration) 원칙을 따라 기본 설정을 제공하여 개발자가 추가적인 설정을 하지 않아도 되는 경우가 많습니다. 이는 개발 생산성을 향상시키고 빠른 개발을 가능하게 합니다.풍부한 기능과 확장성:Spring Boot는 다양한 기능을 제공하는 Spring Framework의 기반 위에 구축되었습니다. 이로 인해 데이터베이스 연동..

Java/Basic 2023.07.25

Spring Cloud MSA(Microservices Architecture)에서 Eureka 장/단점

장점 서비스 검색과 자동 등록: Eureka는 MSA 환경에서 서비스 검색과 등록을 가능하게 해줍니다. 서비스가 Eureka 서버에 등록되면 다른 서비스들은 Eureka를 통해 등록된 서비스를 검색할 수 있습니다. 이를 통해 서비스 간의 통신을 자동으로 구성할 수 있습니다. 탄력적인 확장성: Eureka는 클라우드 환경에서 탄력적인 확장성을 제공합니다. 새로운 서비스 인스턴스가 추가되거나 기존 인스턴스가 제거되면 Eureka 서버에 자동으로 등록되거나 제거됩니다. 이로 인해 시스템이 부하에 따라 자동으로 조정되며 확장될 수 있습니다. 장애 격리와 내결함성: Eureka는 장애 격리와 내결함성을 제공합니다. 서비스 간의 통신에서 문제가 발생하면 Eureka는 이를 감지하고 해당 서비스 인스턴스를 제외하고 ..

Java/Basic 2023.07.25

Excel download java spring

먼저 엑셀 파일을 생성하는 백엔드(서버) 로직을 구현합니다. 이 때 Apache POI 또는 다른 자바 엑셀 라이브러리를 사용하여 엑셀 파일을 생성합니다. 생성된 엑셀 파일을 HTTP 응답에 실어서 클라이언트(프런트엔드)로 보내기 위해 브라우저가 이해할 수 있는 형식으로 변환합니다. 보통 엑셀 파일은 application/vnd.ms-excel 또는 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 형식으로 설정됩니다. 해당 파일의 내용을 HTTP 응답의 body에 쓰고, 파일의 MIME 타입을 설정합니다. 클라이언트(프런트엔드)에서 해당 URL을 호출하면, 백엔드에서 생성된 엑셀 파일이 HTTP 응답으로 반환되고 브라우저는 파일 다운로..

Java/Basic 2023.07.25

response.getOutputStream() 이란?

response.getOutputStream()은 HTTP 응답의 바디에 데이터를 쓰는 단계를 훨씬 간단하게 구현한 것입니다. HTTP 응답을 처리할 때에는 웹 서버는 클라이언트로 응답을 보내기 위해 HttpServletResponse 객체를 사용합니다. response.getOutputStream()은 이 HttpServletResponse 객체를 통해 HTTP 응답의 바디에 데이터를 쓸 수 있는 스트림을 얻어옵니다. 이후에 데이터를 이 스트림에 쓰면, 해당 데이터가 HTTP 응답의 바디로 전송됩니다. 일반적으로 파일 다운로드를 위해서는 생성된 파일을 스트림으로 변환한 후, response.getOutputStream()으로 얻은 스트림에 파일 데이터를 쓰면 됩니다. 이렇게 하면 생성된 파일이 HTTP..

Java/Basic 2023.07.25