[Java] 객체지향(OOP)의 특징: 캡슐화
·
JAVA
객체지향(OOP)의 특징 중 캡슐화에 대해 알아보자📌 서론객체지향 언어인 Java를 사용하다 보면 캡슐화에 대해 다양한 생각을 가지게 된다.나는 처음 캡슐화라는 말을 들었을 때 근본적으로 왜 "캡슐"이라고 부르는지는 생각하지 않고 진짜 알약 캡슐만을 생각하면서 개발하다 보니 대체 왜 이게 캡슐화라고 불리는 것인지 잘 이해가 가지 않았다.다만 현업에 들어와 개발을 하며 시간이 흐른 지금은 이전보다는 이해도가 많이 상승하여 조금은 어떤 느낌인지 알게 되었다. 이번 포스트에서 "캡슐화"에 대해서 간단하게 예시를 통해 알아보도록 하자.  1. 캡슐화란?캡슐화란 무엇일까캡슐화는 '캡슐 안에 무언가를 담는 것'을 의미한다. 우리가 아플 때 먹는 약 캡슐을 생각해 보자. 약 성분은 캡슐 안에 안전하게 보호되어 있다..
[Docker] 단일 단계 빌드 vs 다단계 빌드
·
DevOps/Docker
Docker에서 단일 빌드와 다단계 빌드의 차이점을 알아보자📌 서론사이드 프로젝트를 진행하면서 SpringBoot로 백엔드 서버를 구성했고 K8s를 통해 관리하고 있다. 이때 Spring 프로젝트를 Docker로 빌드하여 그 이미지를 pod에 올려서 배포하고 있는데 이 과정에서 스프링부트를 이미지화시키는 Dockerfile을 작성하면서 어떻게 작성해야 Dockerfile을 잘 작성했다고 할 수 있을지에 대한 고민이 생겼다.그래서 여러 가지 작성 방식을 알아보다가 "단일 단계 빌드, 다단계 빌드"가 존재한다는 것을 알게 되었다.이번 포스트에서는 이 내용들에 대해서 간단하게 정리해 보도록 하겠다. 1. Dockerfile 코드단일 단계 빌드 Dockerfile# 사용할 Java 이미지FROM eclipse..
[Spring] 커스텀 어노테이션 적용
·
Spring 기초/Spring 기초 지식
커스텀 어노테이션 적용기 📌 서론 SpringBoot로 개발하다 보면 @Controller, @Service, @Repository, @Transactional, @Component, @Bean 등등 정말 많은 어노테이션을 사용하여 편하게 개발을 한다. 근데 스프링이 제공하는 어노테이션 말고도 개발자가 직접 본인만의 어노테이션을 만들어서 프로젝트에 적용시킬 수 있다는 것을 아는가? 아마 대부분의 개발자들은 알고 있었겠지만 사용해 볼 일은 거의 없었을 것이다. 나는 사용자 커스텀 어노테이션이 어떻게 작성되고 프로젝트에서 사용되는지 내부의 동작원리가 궁금했고 직접 만들어보기로 했다. 지금부터 Spring에 직접 커스텀 어노테이션을 만들어보면서 이게 어떻게 동작하는지 알아보자. 완성된 코드는 아래의 Repo..
[Spring] @Component로 스프링 빈 등록하기
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 @Component를 사용하여 스프링 빈 등록하는 방법을 알아보자 📌 서론 Spring Framework의 @Component 어노테이션은 클래스 인스턴스를 스프링 빈으로 자동 등록한다. 이는 의존성 주입과 빈 생명주기 관리를 효율적으로 만들며, 스프링의 다양한 기능과도 잘 통합된다. @Component의 사용은 애플리케이션 구성을 간소화하고, 유지보수와 테스트가 쉬운 코드를 만드는 데 중요한 역할을 한다. 이를 통해 스프링 애플리케이션 개발이 더욱 간편하고 효과적이 된다. 1. @Component 사용법 및 특징 기본 사용법 @Component 어노테이션은 스프링 프레임워크에서 클래스를 자동으로 빈으로 등록하기 위해 클래스 레벨에서 사용된다. 이는 스프링 컨테이너가 애플리케이션 시작 ..
Spring Boot: 필터에서 doFilter와 FilterChain이란?
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 Spring Filter에 대한 심화적인 이해를 해보도록 하자 📌 서론 Spring Framework에서 필터는 웹 애플리케이션의 요청과 응답을 조작하는 강력한 도구이다. 필터는 DispatcherServlet으로 가는 요청의 사전 처리와 후처리를 담당한다. 이를 통해 요청과 응답에 대한 중앙집중식 처리가 가능해진다. 필터는 doFilter() 메서드를 통해 요청을 가로채고, 필요한 로직을 실행한 뒤, 요청을 다음 목적지(다른 필터 또는 서블릿)로 전달한다. 지금부터 필터의 핵심 메서드인 doFilter에 대해 상세히 살펴보고, 실제 HTTP 요청 처리 예시를 통해 그 사용법을 알아보자 필터에 대한 자세한 내용은 아래의 포스트를 보고오자 Spring - Filter완전 정복: 웹 애플리..
기술 사용에 대한 목적
·
기타
요즘 공부를 하면서 여러 기술을 적용해보고 있는데 적용하기 전에 이 기술들을 사용하는것에 대한 이유를 많이 고민한다. 왜 이 기술을 사용해야 하는가? 왜 이 기술이어야만 하는가? 대체 이 기술이 뭔가? 이 기술은 근본적으로 어떻게 동작하는가? 무슨 목적으로 이 기술이 만들어졌을까? 이러한 고민을 많이 하고 기술에 대해서 파볼수록 이해도가 높아지지만 동시에 아직 엄청난 공부할 것들이 존재한다는 생각이 든다. 기술은 누군가가 편의를 위해 고민하고 만들어 낸 것이지만 막상 사용자는 그 내부까지는 이해하려 하지 않다 보니 사용하고자 한다면 검색을 통해서 실무에는 바로 적용이 가능하겠지만 내가 왜 사용하고 있는지를 모르는 현상이 발생한다. 이런 현상이 발생하면 누군가가 나에게 물어보러 왔을 때 나도 이걸 왜 사용..
Java I/O: BufferedReader, BufferedWriter, Buffer 사용법
·
JAVA
스프링 부트를 통해 개발을 진행하다 I/O작업에서 주로 사용되는 BufferedReader, BufferedWriter에 대한 궁금증이 생겼다. 이에 이번에는 이것들에 대해서 알아봤다. BufferedReader와 BufferedWriter는 자바(Java) 프로그래밍 언어에서 입출력(I/O) 작업을 효율적으로 수행하기 위해 사용되는 클래스이다. 이 클래스들은 버퍼를 사용하여 데이터를 읽고 쓰는 작업을 최적화한다. 1. BufferedReader 1-1. BufferedReader란? BufferedReader는 텍스트 파일이나 입력 스트림에서 문자를 읽을 때 사용된다. 이 클래스는 내부 버퍼를 사용하여 한 번에 여러 문자를 읽어 들이므로, 매번 디스크나 네트워크에서 직접 읽는 것보다 훨씬 빠르다. tr..
Spring Boot: @ControllerAdvice/@RestControllerAdvice로 예외처리하기
·
Spring 기초/Spring 기초 지식
@ControllerAdvice와 @RestControllerAdvice에 대해 자세히 알아보자 📌 서론 프로그래밍에서 예외 처리는 매우 중요한 부분이며, Spring Boot에서는 @ControllerAdvice와 @RestControllerAdvice를 통해 이를 효율적으로 수행할 수 있다. 이 어노테이션들은 코드의 재사용성과 유지 보수성을 높여, 복잡한 비즈니스 로직에서도 예외 상황을 안정적으로 관리할 수 있게 해준다. 1. @ControllerAdvice이해 @ControllerAdvice란? @ControllerAdvice는 Spring 3.2에서 도입된 어노테이션으로, 모든 @Controller 클래스가 공유하는 공통 로직을 정의할 때 사용한다. 주로 예외 처리와 바인딩 설정, 모델 객체 등에..