티스토리 뷰

스프링프레임워크

bean 과 DI 컨테이너

잔잔한 물결처럼 2025. 3. 10. 03:28

 

스프링 프레임워크는 DI(의존성 주입) 컨테이너라는 기능을 통해 자바 인스턴스를 생성하고 관리합니다. 애플리케이션을 시작할 때 필요한 설정을 읽어 들여 인스턴스를 생성하고, 이 인스턴스를 DI 컨테이너에 보관합니다. DI 컨테이너에 의해 관리되는 이러한 인스턴스를 빈(bean)이라고 부릅니다. 쉽게 설명하자면, 스프링은 필요할 때 빈을 꺼내어 사용하도록 하는 방식으로 동작합니다. 따라서, 스프링의 사용법을 이해하기 위해서는 이러한 빈을 적절히 활용하는 것이 중요합니다.

 

스프링 프레임워크에서 특정 클래스를 으로 만들기 위해 지시하는 과정을 빈을 정의한다고 합니다. 빈을 정의하는 주요 방법은 크게 세 가지가 있습니다:

  1. 클래스에 어노테이션을 부여하는 방법
  2. 자바 설정(Java Config) 클래스에 메서드를 생성하는 방법
  3. XML 설정 파일을 통해 작성하는 방법

1번 방법은 @Component, @Control, @Autowired 등의 어노테이션을 사용해 자바 빈을 정의할 수 있습니다.

2번 방법은 자바 컨피그 클래스를 만들어 자바 빈을 정의해야 합니다.

 

자바 컨피그 클래스 코드

import com.example.demo.service.BusinessLogic;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JavaConfigSampleApplication {

	public static void main(String[] args) {

		SpringApplication.run(JavaConfigSampleApplication.class, args)
				.getBean(JavaConfigSampleApplication.class).exe();
	}

	@Autowired
	@Qualifier("test")
	private BusinessLogic business1;

	@Autowired
	@Qualifier("sample")
	private BusinessLogic business2;

	public void exe() {
		business1.doLogic();
		business2.doLogic();
	}
}

 

import com.example.demo.service.BusinessLogic;

public class SampleLogicImpl implements BusinessLogic {
    @Override
    public void doLogic() {
        System.out.println("샘플 데이터를 처리합니다.");
        System.out.println("샘플 데이터 처리가 완료되었습니다.");
    }
}
import com.example.demo.service.BusinessLogic;

public class TestLogicImpl implements BusinessLogic {
    @Override
    public void doLogic() {
        System.out.println("테스트 중입니다.");
    }
}
import com.example.demo.service.BusinessLogic;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JavaConfigSampleApplication {

	public static void main(String[] args) {

		SpringApplication.run(JavaConfigSampleApplication.class, args)
				.getBean(JavaConfigSampleApplication.class).exe();
	}

	@Autowired
	@Qualifier("test")
	private BusinessLogic business1;

	@Autowired
	@Qualifier("sample")
	private BusinessLogic business2;

	public void exe() {
		business1.doLogic();
		business2.doLogic();
	}
}

 

코드 해석

@Bean(name = "test") 어노테이션은 test 이름으로 메서드에서 반환된 객체를 빈으로 정의한다.

@Autowired @Qualifier("test") 어노테이션은 DI 컨테이너에서 test 이름으로 저장된 빈을 이용해 해당 객체에 의존성을 주입한다.

'스프링프레임워크' 카테고리의 다른 글

AOP 용어와 어노테이션 정리  (0) 2025.03.15
인스턴스에 @Autowired 로 필드 주입하는 방법 3가지  (0) 2025.03.15
템플릿 엔진  (0) 2025.03.01
MVC 모델이란  (1) 2025.02.28
PostgreSQL 설명  (0) 2025.02.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함