보물창고 블로그

Bean이란 무엇일까? 본문

웹 개발/SpringBoot

Bean이란 무엇일까?

홋 메 2022. 4. 24. 19:29
728x90

Bean 이란 스프링 IOC 컨테이너가 관리하는 객체입니다.  특징은 오로지 Bean 들만 의존성 주입을 해줍니다.

그렇다면 IOC 컨테이너에 Bean을 어떻게 등록하는 걸까요? 크게 2가지 방법이 있습니다. 

첫 번째 방법은 Component Scanning입니다.

Component Scanning의 방법은 @Component 어노테이션을 사용하는 방법입니다.

@Repositoy , @Service, @Controller, @Configuration 등과 같은 어노테이션에 @Component 어노테이션이 붙어있습니다. @SpringBootApplication 어노테이션에 붙어있는 @ComponentScan 어노테이션을 통해 @Component 어노테이션이 붙은 객체들을 IOC 컨테이너에 Bean 객체로 등록시켜 줍니다.

2번째 방법은 일일이 XML이나 자바 설정 파일(Config)에 등록하는 방법입니다.

@Configuration
public class HoseConfig{
	
    @Bean
    public HoseService hoseService(){
    	return new HoseService();
    }

}

위 코드는 자바 설정 파일(Config)에 @Bean 어노테이션을 사용하여 HoseService 객체를 IOC 컨테이너에 등록하는 예시 코드입니다.

그렇다면 IOC 컨테이너에서 Bean 객체를 꺼내 쓰는 방법은 뭘까요?

@Autowired 어노테이션 또는 ApplicationConetxt에서 getBean()으로 직접 꺼내 쓸 수 있습니다.

public class DiTest{
	
    @Autowired
    ApplicationContext applicationContext;
    
    public void testDI(){
    	HoseService bean = applicationContext.getBean(HoseService.class);
    }
}

위 코드에서 @Autowired 어노테이션을 통해 ApplicationContext 객체를 의존성 주입을 받아서 가져오고, testDI 메서드에서 applicationContext.getBean() 메서드를 사용하여 IOC 컨테이너에 있는 HoseService 타입의 객체를 가져오고 있습니다.

'웹 개발 > SpringBoot' 카테고리의 다른 글

IOC란 무엇일까?  (0) 2022.04.24
API 버전 관리  (0) 2021.09.25
Comments