컨테이너, 빈, 의존성 주입(DI)
사전지식
•
싱글톤 패턴 : 메모리를 줄이기 위해 중복 호출할 경우 주소값을 리턴하여 같은 메모리를 사용하도록 한다.
컨테이너와 빈
•
스프링 프로젝트당 하나의 컨테이너가 존재한다. 즉, 그 둘은 같다.
◦
스프링 프로젝트 생성 &rarr 하나의 컨테이너 생성 &rarr 빈을 저장할 수 있는 공간 생성
•
빈에는 빈이름과 인스턴스의 주소값을 저장하는 방식으로 이루어지며, 프로젝트가 처음 실행될 때 스프링이 어떤 빈이 있는지 스캔한다.
•
따라서 자바 객체를 빈에 등록하는 작업이 필요하다.
빈을 등록하는 방법
1.
XML
2.
*어노테이션 - 우리가 많이 쓰는 방식 @Controller @Service ...
의존성 주입
1.
필드 주입
•
@Autowired 를 사용
•
가장 일반적이나 요즘은 사용하지 않는 추세
2.
수정자 주입
•
setter를 통해서 주입
•
거의 사용하지 않음
3.
생성자 주입* (추천!!)
•
사용 방법
1.
final로 선언
2.
생성자를 생성 (lombok @RequiredArgsConstructor 로 생략 가능)
3.
스프링이 알아서 인식


