첫 번째 Java Spring Bean 및 Java Spring 설정 시작

시에나·2026년 1월 7일

스프링 기초

목록 보기
1/13
post-thumbnail

이제부터 객체(Object) 관리를 내가(개발자) 직접 하지 않고, 스프링(Spring)에게 맡기겠다는 의미로 스프링을 쓰라고 했습니다.

가장 헷갈리는 부분은 "그냥 String name = "Ranga";라고 쓰면 되는데 왜 굳이 복잡하게 설정을 만들지?"라는 점이고, 이 과정은 스프링 프레임워크의 핵심 원리를 이해하는 첫 단추입다.


1. "요리하기" vs "주문하기"

일반적인 자바 코드가 '직접 요리하기'라면, 스프링 코드는 '식당에 주문하기'입니다.

  • 기존 방식 (직접 요리): 내가 필요할 때마다 new 키워드를 써서 직접 객체를 생성하고 관리합니다.
  • 스프링 방식 (주문):
  1. 메뉴판(Configuration)에 만들 수 있는 요리를 적어둡니다.
  2. 주방(Spring Context)을 오픈합니다.
  3. 주방장(Spring)에게 "메뉴판에 있는 저 요리 주세요(getBean)"라고 요청합니다.

2. 코드 뜯어보기

(1) 메뉴판 만들기: HelloWorldConfiguration.java

이 파일은 "스프링이 관리해야 할 객체들이 무엇인지 적어둔 메뉴판"입니다.

@Configuration  // 1. "이 클래스는 설정 정보(메뉴판)입니다"라고 알려주는 표시
public class HelloWorldConfiguration {

    @Bean      // 2. "이 메서드가 반환하는 결과물을 스프링이 맡아주세요"라고 등록
    public String name() {
        return "Ranga"; // 스프링이 관리하게 될 실제 값
    }
}
  • @Configuration: 스프링에게 "이 파일은 설정 파일이야"라고 알려줍니다.
  • @Bean: 스프링 컨테이너(주방)가 관리하는 객체를 '빈(Bean)'이라고 부릅니다. 이 어노테이션을 붙이면, 메서드 이름인 name이라는 이름으로 "Ranga"라는 문자열이 스프링의 관리 목록에 등록됩니다.

(2) 주방 열고 주문하기: App02HelloWorldSpring.java

이 파일은 "스프링 주방(컨테이너)을 실제로 가동하고, 객체를 꺼내 쓰는 곳"입니다.

// 1. 스프링 컨텍스트(주방) 실행
var context = 
    new AnnotationConfigApplicationContext(HelloWorldConfiguration.class);

// 2. 스프링에게 관리 중인 객체 달라고 요청 (주문)
System.out.println(context.getBean("name"));
  • new AnnotationConfigApplicationContext(...): 이게 바로 스프링 컨텍스트(컨테이너)를 실행하는 코드입니다. 괄호 안에 HelloWorldConfiguration.class를 넣은 것은, "이 설정 파일(메뉴판)을 보고 주방을 세팅해라"라고 명령한 것입니다.
  • context.getBean("name"): 이제 내가 직접 new String(...)을 하지 않습니다. 대신 이미 실행된 컨텍스트(context)에게 "아까 설정 파일에 name이라는 이름으로 등록된 빈(Bean) 좀 줘"라고 요청하는 것입니다. 그러면 스프링은 관리하고 있던 "Ranga"를 꺼내줍니다.

3. 요약: 오늘 배운 것

"JVM 내부에서 Spring 컨텍스트를 생성하고... Spring 프레임워크가 관리하도록 할 것입니다"라고 한 말이 바로 이 과정입니다.

  1. 설정 클래스(@Configuration)를 만들었습니다.
  2. 그 안에 빈(@Bean)을 정의해서 스프링에게 "이 객체 네가 좀 맡아줘(관리해 줘)"라고 위임했습니다.
  3. 컨텍스트(ApplicationContext)를 실행시켜서 스프링을 깨웠습니다.
  4. getBean을 사용해서 스프링이 가지고 있는 객체를 꺼내 왔습니다.

이것을 전문 용어로 IoC (Inversion of Control, 제어의 역전)라고 부릅니다. 개발자가 직접 제어(생성)하던 것을 스프링 프레임워크에게 넘겨줬다는 뜻입니다.


0개의 댓글