Spring Bean이란?
- Spring IoC 컨테이너가 관리하는 자바 객체를 Bean이라고 한다.
- 직접 new를 이용하여 생성한 객체가 아니라, Spring에 의하여 생성되고 관리되는 객체이다.
- ApplicationContext.getBean()과 같은 메소드를 사용하여 Spring에서 직접 자바 객체를 얻어서 사용한다.
OwnerController ownerController = new OwncerContraoller();
-> Bean 객체 X
OwnerController bean = applicationContext.getBean(OwnerController.class);
-> Bean 객체 O
Spring IOC Container에 Bean을 만드는 법
방법 1. Component Scanning
@ComponentScan
annotation은 또다른 annotation이 달린 class를 찾기 위해 어느 지점부터 살펴보아야 하는지 알려준다.
@Component
, @Controller
, @Service
, @Repository
등 모두 찾아 Bean으로 등록해 주는 것이 Component Scanning이다.
- 위 예제에서 직접 OwnerController를 빈으로 등록하지 않더라도 Spring이 알아서 IOC Container가 만들어질 때, 스캔해서 annotations를 보고 자동으로 bean으로 등록해준다.
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data", "hello!");
return "hello";
}
방법 2. Bean Configuration File에 직접 등록
@Configuration
을 사용하여 Spring 프로젝트에서 Configuration 역할을 하는 class를 지정할 수 있다.
- 해당 파일 하위에
@Bean
을 사용하여 등록하고자 하는 class를 bean으로 등록한다.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService(){
return new MemberService(memberRepository);
}
}
References