전체 글 20

[ Spring ] HandlerMethodArgumentResolver이란? - 개발 지식

스프링을 사용하다 보면 API에 인자값들을 받는 모습을 쉽게 볼 수 있습니다.예를 들어 @RequestBody를 통해 특정 객체를 받는 모습도 볼 수 있습니다.또는 @PathValuable String memberId와 같이 경로의 값을 받는 모습도 볼 수 있습니다.그런데 이런 과정이 Spring에서 어떻게 일어나고 있을까요?이렇게 Argument에 대해 처리하는 것을 바로 ArgumentResolver라고 합니다.오늘은 바로 이 ArgumentResolver에 대해서 알아보도록 하겠습니다. 목차01. HandlerMethodArgumentResolver이란?01-1. 적용 과정 예시02. 적용 과정 정리03. 실제 적용 예시 (Paging 처리)※ 참고 (기본 세팅 되어 있는 ArgumentResolv..

Spring 2025.04.15

[HTTP API 설계] Spring HTTP API란? - 개발 지식

항상 어디서 많이 들어봤던 HTTP API.하지만 정확히 이해하지는 못했었던 HTTP API.오늘은 HTTP API 설계에 대해서 알아보도록 하겠습니다. 목차01. HTTP API02. REST API 란?03. HTTP API vs REST API 차이점 03-1. HTTP vs REST 03-2. HTTP API vs REST API 04. REST API 디자인 04-1. 디자인 해야할 것들! 04-2. URI 디자인 05. HTTP Method 05-1. HTTP Method의 의미 05-2. 추가적인 HTTP Method의 사용법 [참고] 05-3. URI QUERY 디자인 06. 일반적으로 좋은 A..

Spring 2025.04.14

[IOC] 제어 역전의 모든 것 - Spring 지식

B이전 포스팅에서 스프링 프레임 워크에 대해서 소개해보았습니다.이번 시간에는 스프링 프레임 워크의 주요 특징들에 대해서 알아보도록 하겠습니다.스프링 프레임 워크의 주요 특징은 IOC, 제어 역전 / DI, 의존성 주입 / AOP, 관점 지향 프로그래밍 입니다.오늘은 이 세가지 중 IOC, 제어 역전에 대해 알아보도록 하겠습니다. 01. 스프링에서 IOC의 중요성02. Spring IOC의 필요성03. IOC, 제어 역전이란?04. Spring Container란? (IOC의 행동대장?) 04-1. Spring Container 04-2. Bean Factory 04-3. ApplicationContext05. Spring Bean이란? 05-1. 빈등록 방법 2가지 05-2. 스테레오타입 어노테이션 05..

Spring 2025.04.02

[Spring Boot] 스프링 부트란? - 개발 지식

이번에는 스프링 부트에 대해서 공부해보겠습니다. 나는 스프링을 공부하면서 IOC와 DI가 엄청 중요한 개념이라고 생각이 들었다.그런데 이런 개념을 이해하기 위해서는 스프링 부트에 대한 기본적인 이해가 필요하다고 생각했고이번 시간에 스프링 부트에 대해 이해하고 다음 포스팅에서 IOC와 DI에 대해서 정리해보겠다. 01. 스프링 부트란 무엇인가?정의 : 스프링 부트란 스프링의 프레임 워크를 말한다.사실 스프링 프레임 워크 자체는 아닌데 스프링 프레임워크는 장점이 아주 많지만 설정이 복잡하다는 단점이 있었고 이를 해결하고자  자동 설정이라는 큰 강점을 가진 스프링 부트를 만들어낸 것이다.  ※ 프레임워크가 무엇인지 알고가자!  (  프레임워크  VS   라이브러리)프레임 워크 : 여러 라이브러리들을 활용하여 ..

Spring 2025.03.31

[Mockito] 독립적 환경의 테스트 코드 작성 - 개발 경험

들어가기 앞서, 개발에서 중요한 2가지.1. 왜 이렇게 작성했는지를 아는 것 : 개발이라는 것은 비용 대비 효율성이기 때문에 이유가 필요합니다.2. 테스트 코드 : 제대로 잘 동작하는지, 빈틈은 없는지, 오류가 나지 않는지 확인하는게 중요합니다.  ※ 단위 테스트 VS 통합 테스트통합 테스트란 실제 환경에서 실행하여 여러 클래스와 메소드가 정상적으로 잘 작동하는지를 테스트하는 것.단위 테스트란 각각의 클래스와 메소드가 개별적으로(독립적으로) 잘 작동하는지를 테스트 하는 것. (다른 코드와 독립적으로 만드는게 복잡함 -> Mockito를 사용) 01. Mockito란?Mockito란 단위 테스트를 쉽게 작성할 수 있도록 도와주는 Mocking 프레임워크입니다.mock이라는 뜻은 가짜, 가상이라는 뜻인데, ..

카테고리 없음 2025.03.25

[빌드 & 배포] 빌드 파해치기 (with Maven)- 개발 경험

[개요] : 백엔드 개발을 하다 보면 ‘빌드(Build)’, ‘패키징(Packaging)’, ‘배포(Deployment)’ 같은 단어를 많이 듣게 된다. 하지만 처음 접하면 복잡해 보이고, 어디서부터 이해해야 할지 막막할 때가 많다. 이번 글에서는 이러한 개념들을 차근차근 정리하고, 실제로 Maven을 사용해 프로젝트를 빌드하는 방법까지 알아보자.  그런데 우리는 왜 빌드에 대해서 공부해야할까?하나, 실제 서비스를 만들고 운영할 수 있어야 하기 때문이다서비스 개발은 단순 코드 작성에서 끝나는 것이 아니기 때문이다개발한 코드를 사용자에게 잘 전달하는 것도 개발의 하나이기 때문이다.둘, 효율적인 협업을 위해서이다.  서비스 개발은 협업을 통해 진행되는데 빌드 도구를 통해 동일한 환경에서 개발할 수 있기 때문..

카테고리 없음 2025.03.15

[데이터베이스 모델링] DB 어떻게 설계하나 - 개발 경험

[ 개요 ]: 수업시간 강사님이 DB에 대한 기본적인 개념을 설명해주신 뒤 dpPrime (https://dprime.kr/) 이라는 웹 사이트를 보여주시면서 이제 직접 데이터베이스를 설계해 보라고 과제를 주셨다. 우선 ERD Cloud를 켠 뒤 무작정 구조를 만들었다. dpPrime이라는 웹 사이트를 보면 알 수 있듯이 대표적인 블로그 형태를 띄고 있는 커뮤니티 사이트였다.   나는 일단 눈에 보이는 Entity들을 넣었다. 우선적으로 커뮤니티가 다양한 주제의 Category를 가지고 있기 때문에 Category테이블과 글 데이터를 갖고 있는 Post테이블 그리고 사용자에 대한 User데이터로 시작했다.하지만 무작정 만들었던 구조는 설계의 긴 여정의 하나에 불과했다.나는 여러 DB를 설계해보면서 깨달은..

DataBase 2025.03.11

[네트워크]소켓과 HTTP이란? - 네트워크 지식

네트워크 프로그래밍을 공부하면서 배운 개념이 2가지가 있었다. 바로 소켓과 HTTP이다.개요 : 네트워크를 공부하면서 엄청 자주 들었었는데 "HTTP로 데이터를 주고 받는다" 또는 "소켓으로 연결하여 통신한다" 정도의 얕은 이해로만 알고 있었다. 하지만 이번에 직접 소켓과 HTTP로 통신하고 직접 request, response를구현해보면서 그 개념을 깊에 이해할 수 있었다.나의 이해를 한 번 공유해보려고 한다.    배경 : 쉬운 네트워크의 이해, 네트워크 == 우편?내가 이해한 네트워크는 아주 예전에 사용하던 통신 방법인 우편과 똑같다.1. A가 B에게 편지을 보내려면 A와 B는 각자의 우체통이 필요하다.2. 각자의 우체통이 있다고 하면 A는 A의 우체통에 보낼 편지를 넣으면 주소에 따라 우체부가 B..

Network 2025.02.23

[디자인 패턴] Observer 패턴이란? - 개발 경험

Observer 패턴이란 일대다 관계에서 주로 사용되며 객체의 상태 변화를 다른 객체들에 알릴 때 사용되는 디자인 패턴이다. 소켓에 대해 프로그래밍을 하던 도중 디자인 패턴이라는 개념을 접하게 되었다.내가 개발하던 프로그램은 "소켓을 이용한 클라이언트 간 메세지 송수신 프로그램"이었다. 어떻게 클라이언트의 메세지를 보내고 받을 수 있을까?이 때 사용했던 디자인 패턴이  바로 옵저버 패턴였다.   옵저버 패턴의 구조는 크게 3가지로 구성되어있다.1. 이벤트를 발생시키는 객체인 주체(Subject)2. 주체의 상태를 변화하고 감지하고 반응하는 객체인 옵저버(Observer)3. 옵저버의 행동을 담당하는 액션(Action)  그렇다면 클라이언트가 메세지 보내는 과정을 옵저버 패턴에 적용하면?1. 클라이언트가 ..

카테고리 없음 2025.02.16

[Spring] 시작, Spring이란? - 개발 지식

🌱 스프링(Spring)이란?자바(Java) 언어 기반의 웹 프레임워크입니다.쉽게 말하면, 자바로 웹 애플리케이션을 쉽게 만들 수 있게 도와주는 틀을 말합니다.스프링은 자바의 큰 특징인 객체 지향 프로그래밍(OOP)의 장점을 잘 살려냈다는 것이 스프링의 장점이자 매력입니다. ❓왜 스프링이 만들어졌을까?과거: EJB의 등장옛날에는 자바로 웹 서비스를 만들 때 EJB(Enterprise Java Beans)라는 기술을 많이 사용했습니다.이 기술은 기능은 좋았지만,너무 복잡하고설정이 어렵고개발 속도도 느렸습니다.변화: "POJO"로 돌아가자!그래서 개발자들 사이에서 "순수한 자바 객체(POJO: Plain Old Java Object)로 돌아가자!"는 움직임이 생겼고이 흐름 속에서 나온 것이 바로 스프링입니..

Spring 2024.10.02