내일배움캠프 TIL 9일차 - 오늘 배운 것

정광훈(단기심화_9기)·2026년 9월 10일

TIL (Today I Learned)

목록 보기
118/129
post-thumbnail

[Spring Boot/Java] RestClient의 필요성, Spring Bean과 IoC, 그리고 for문 vs Stream 비교

스프링 기반 백엔드 애플리케이션을 개발할 때 마주치는 세 가지 핵심 주제
(외부 API 통신을 위한 RestClient, 프레임워크의 근간이 되는 Bean과 IoC,
그리고 컬렉션 순회 시 고민하는 for문과 Stream)를 핵심만 명확하게 정리한 포스트입니다.


1. RestClient: 외부 서버와 통신하기

💡 RestClient란?

스프링 프레임워크에서 제공하는 HTTP 클라이언트 도구로,
우리 서버가 직접 다른 외부 서버(외부 API)로 HTTP 요청을 전송하고 응답을 받아올 때 사용합니다.

  • 관점의 전환: 평소에는 클라이언트(브라우저/앱)가 우리 서버로 요청을 보내지만,
    이 도구를 쓸 때는 "우리 서버가 곧 클라이언트"가 되어 다른 서버를 호출합니다.

📌 왜 필요한가? (사용 사례)

현대의 웹 서비스는 독자적으로만 동작하지 않고 수많은 외부 시스템과 연동해야 합니다.

  • 외부 결제 API 연동: 포트원, 토스페이먼츠 등 결제 승인 요청을 외부 결제사에 전달
  • 소셜 로그인(OAuth): 카카오, 네이버, 구글 등의 외부 인증 서버로 사용자 정보 요청
  • MSA(마이크로서비스): 분리되어 있는 사내 다른 서비스 서버 간 통신

이처럼 외부 서버와의 통신이 필요할 때 간결하고 유연하게 HTTP 요청을 날릴 수 있도록 돕는 도구가 RestClient입니다.


2. Spring Bean과 IoC (제어의 역전)

개념설명
Spring Bean개발자가 new 키워드로 직접 인스턴스화하지 않고, Spring 컨테이너가 직접 생성하고 생명주기를 관리해 주는 객체
IoC (Inversion of Control)제어의 역전. 객체의 생성, 관리, 소멸 등 프로그램 흐름의 제어권을 개발자가 아닌 스프링 프레임워크(컨테이너)가 대신 쥐고 주도하는 구조

💡 핵심 요약
"내가 객체를 만들어 조립하는 것"이 아니라, "스프링이 대신 만들어서 준비해 둔 Bean을
필요한 곳에 주입받아 쓰는 구조"
를 통해 객체 간 결합도를 낮추고 유지보수성을 극대화합니다.


3. for문 vs Stream: 성능과 가독성의 선택 기준

자바 컬렉션의 데이터를 순회하고 가공할 때 전통적인 for-loop와 Stream API 중
무엇을 써야 할지 고민되는 순간이 많습니다.

비교 항목전통적인 for문 (for-loop)Stream API
실행 속도(성능)오버헤드가 없어 상대적으로 더 빠름내부 반복자, 람다 객체 생성 등으로 약간의 오버헤드 존재
코드 가독성로직이 복잡해질수록 중첩문과 인덱스로 인해 가독성 저하메서드 체이닝(filter, map 등)을 통해 선언적이고 명확한 의도 표현
현대 실무 트렌드하드웨어 성능이 크게 향상되어 극단적인 대용량 트래픽 최적화가 아니라면 가독성과 유지보수성이 뛰어난 Stream을 선호

💡 선택 기준:
밀리초(ms) 단위의 극단적인 성능 튜닝이 요구되는 특수한 알고리즘/배치 환경이 아니라면,
대부분의 비즈니스 로직에서는 가독성이 높고 실수 발생 여지가 적은 Stream API를
활용하는 것이 유지보수에 훨씬 유리
합니다.

profile
내배캠 Unity_9기 / 게임 서버 단기 심화_9기

0개의 댓글