[Spring Boot] 스프링 빈(Spring Bean)

메리·2023년 3월 16일
1

스프링 부트

목록 보기
3/5

1. 스프링 빈(Spring Bean)

스프링 IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부른다. 자바 프로그래밍에서는 클래스를 생성하고 new 키워드를 이용하여 객체를 생성한 후 사용했다. 하지만 스프링에서는 스프링에 의하여 관리당하는 자바 객체를 사용한다. 이처럼 스프링에 의해 생성되고 관리되는 자바 객체를 빈이라고 한다.

2. 스프링 빈을 스프링 IoC 컨테이너에 등록하는 방법

2-1. 컴포넌트 스캔

컴포넌트 스캔은 @Component를 명시하여 빈을 추가하는 방법이다. @Component가 등록되어 있는 경우에는 어노테이션을 확인하고 자체적으로 컨테이너에 빈을 등록한다.

  • 컴포넌트 스캔의 대상
    @Component 외에 @Controller, @Service, @Repository, @Configuration@Component의 상속을 받고 있으므로 모두 컴포넌트 스캔의 대상이다.
// HelloController.java
@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data", "This is data!!");
        return "hello";
    }
}

2-2. 빈 설정 파일에 직접 등록

@Configuration@Bean 어노테이션을 이용하여 빈을 등록할 수 있다. @Configuration을 이용하면 Configuration 역할을 하는 클래스를 지정할 수 있고 해당 파일의 하위에 Bean으로 등록하고자 하는 클래스에 @Bean 어노테이션을 이용하면 간단히 빈을 등록할 수 있다.

// Hello.java
@Configuration
public class HelloConfiguration {
    @Bean
    public HelloController sampleController() {
        return new SampleController;
    }
}

3. @Bean vs @Component

@Bean
개발자가 컨트롤이 불가능한 외부 라이브러리를 빈으로 등록하고 싶은 경우 사용.
메서드 또는 어노테이션 단위에 붙일 수 있다.
@Component
개발자가 직접 컨트롤이 가능한 클래스의 경우 사용.
클래스 또는 인터페이스 단위에 붙일 수 있다.


출처:
스프링 빈(Spring Bean)이란? 개념 정리
[Spring] Spring Bean 총 정리

profile
하이루

0개의 댓글