Spring[Info] - 빈(Bean)
2021. 7. 2. 14:09ㆍSpring/Spring[Info]
반응형
🤔 빈 (Bean)?
- IoC에서 관리되는 일반적인 객체
다음 객체는 Bean이 아니다
OwnerController ownerController = new OwnerController();
다음 객체는 applicationContext에서 관리하는 객체를 가져왔으므로 Bean이다.
OwnerController bean = applicationContext.getBean(OwnerController.class);
🤔 Bean 만드는 방법?
2가지 방법
- Component Scanning
- 직접 등록하기
Component Scanning
- @Controller라는 Annotation은 사실 @Component Annotation을 사용하도록 구현되어 있다.
- Annotation 프로세서 중 IoC가 사용하는 여러가지 interface들이 있는데, 이것을 라이프 사이클 콜백이라고 부른다.
직접 등록하기
- XML, Java 설정 파일을 통해 등록해준다.
@Configuration
public class SampleConfig {
@Bean
public SampleController sampleController() {
return new SampleController();
}
}
@Test
public void testDI() {
SampleController bean = applicationContext.getBean(SampleController.class);
assertThat(bean).isNotNull();
}
🤔 Bean 사용 방법?
- ApplicationContext를 통해 직접 꺼내기
- 생성자 대신 @Autowired Annotation을 사용하기 (DI 방식)
가져오는 방법 3가지
- Spring 4.3 버전부터는 생성자가 1개 뿐이고 매개변수가 Bean 객체이면 해당 Bean을 자동으로 주입해주도록 추가됨
- 위 경우라면 @Autowired 생략 가능
1. 필드
@Autowired
private final OwnerRepository owners;
@Autowired
private VisitRepository visits;
2. Setter
@Autowired
public void setOwners(OwnerRepository owners) {
this.owners = owners;
}
3. 생성자
// @Autowired 생략 가능
private final OwnerRepository owners;
// @Autowired 생략 가능
private VisitRepository visits;
public OwnerController(OwnerRepository clinicService, VisitRepository visits) {
this.owners = clinicService;
this.visits = visits;
}
반응형