Bean과 Ioc, 쉽게 알아보자!

lilseongwon·2022년 8월 24일
2
post-thumbnail

Bean이 뭐야?🥜

Spring이 제공하는 Container(DI container == IoC Container)를 통해서 관리되는 인스턴스이다.

Spring은 Container에 Bean 등록할 때 기본으로 싱글톤으로 등록한다.
즉, Bean으로 지정된 클래스는 Container에 서 1개의 인스턴스로만 존재할 수 있다. 유일하게 하나만 등록해서 공유한다는 뜻으로 이해하면 된다.

Bean 등록

Bean 등록 방법에는 2가지가 있다.

컴포넌트 스캔과 자동 의존관계 설정
자바 코드로 직접 스프링 빈 등록하기
1) 컴포넌트 스캔과 자동 의존관계 설정
@Component를 포함하는 다음 애노테이션이 있으면 Bean으로 자동 등록된다.

  • @Controller
  • @Service
  • @Repository

스프링 팀에서는 생성자 주입 방식을 권하고 있다.

생성자 만들기가 귀찮다면 @RequiredArgsConstructor 어노테이션 사용을 추천한다.(롬복 짱짱)

@RequiredArgsConstructor 
@Controller
class UserController {
	private final UserService userService; 생성자 자동주입
}

2) 직접 Bean 등록하기

@Configuration
public class SpringConfig {
	
   @Bean
   public UserRepository UserRepository() {
   	return new UserRepository();
   }
}

IoC(Inversion of Control) 제어의 역전🔄

의존성은 어떤 객체가 사용해야 할 객체라고 할 수 있고, 이것을 직접 new 등을 써서 만들어 쓰면 의존성을 자기가 직접 만들어 쓴다고 할 수 있다. 일반적으로 의존성은 직접 만들어 쓰는 것을 의미한다.

@Service
class UserService {

    private final UserRepository UserRepository = 
    					new UserRepository();
}

위의 코드와 달리 직접적으로 의존성을 만들지 않고, 외부에서 의존성을 가져오는 경우를 제어권 역전이 일어났다고 말한다.

DI는 IoC의 일종이라고 생각하면 된다.


참고

https://velog.io/@jurani/Spring-DI%EC%99%80-IoC

profile
스프린트가 아닌 사이클링

0개의 댓글