GiYeong
Spring - 2 본문
DI(Dependency Injection) 방법
1. 필드 주입(Field Injection)
@Autowired 어노테이션을 통해 의존성을 주입하는 방법이다.
class A {
@Autowired
private B b;
}
2. 생성자 주입(Constructor Injection)
생성자를 통해 의존성을 주입하는 방식으로 가장 권장되는 주입 방식이다.
class SampleClass {
private final Sample sample; // final 사용 가능
@Autowired
public SampleClass(Sample sample) {
this.sample = sample;
}
}
3. 수정자 주입(Setter Injection)
Setter 메서드를 통해 의존성을 주입하는 방식이다.
class SampleClass {
private Sample sample;
@Autowired
public void setSample(Sample sample) {
this.sample = sample;
}
}
@Autowired
의존관계 주입을 할 때 사용되는 Annotation으로, 컨테이너에서 의존 객체의 타입에 해당하는 Bean을 찾아 주입하는 역할을 한다.
Autowiring 과정
1. 타입이 같은 Bean 객체를 검색한다.
2. 검색된 Bean 객체가 1개면 해당 객체를 사용한다.
(@Qualifier가 명시되어 있을 경우, @Qualifier와 같은 값을 갖는 Bean 객체여야 한다.)
3. 타입이 같은 Bean 객체가 2개 이상 존재하면, @Qualifier로 지정한 Bean 객체를 찾는다.
3-1. @Qualifier로 지정한 객체가 존재하면, 그 객체를 사용한다.
3-2. @Qualifier가 없을 경우, 이름이 같은 Bean 객체를 찾는다. 존재하면, 그 객체를 사용한다.
Spring Web MVC
DispatcherServlet
가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 먼저 받고, 적합한 컨트롤러에 요청을 위임해주는 Front Controller.
1. Dispatcher Servlet에서 클라이언트의 요청을 받음.
2. 요청 정보를 통해 요청을 위임할 컨트롤러를 찾음.
3. 요청을 컨트롤러로 위임할 Handler Adapter를 찾아서 요청 전달.
4. Handler Adapter가 컨트롤러로 요청 위임.
5. 컨트롤러에서 서비스를 호출하고 비즈니스 로직 처리.
6. 컨트롤러에서 반환 값을 반환.
(ResponseEntity를 주로 반환하지만, View 이름을 반환할 수도 있음.)
7. Handler Adapter가 반환 값을 처리.
(ResponseEntity가 반환되었을 경우, 응답객체를 직렬화하고 응답 상태(HttpStatus)를 설정. View 이름이 반환되었을 경우, ViewResolver를 통해 View를 반환.)
8. 서버의 응답을 클라이언트로 반환.
Front Controller 패턴
Front Controller란?
공통 코드를 처리하고 요청에 맞는 컨트롤러를 매핑해주는 역할.
프론트 컨트롤러 도입 전
프론트 컨트롤러 도입 후
참고 사이트
https://soobarkbar.tistory.com/230
스프링 의존성 주입 방식 종류와 차이
의존성 주입 (Dependency Injection) 의 종류 1. 생성자 주입 방식 (Constructor Injection) 생성자를 통해 의존성을 주입하는 방식이다. 총 3가지 주입 방식 중 가장 권장되는 주입 방식이다. (아래에서 자세히
soobarkbar.tistory.com
https://mangkyu.tistory.com/18
[Spring] Dispatcher-Servlet(디스패처 서블릿)이란? 디스패처 서블릿의 개념과 동작 과정
이번에는 servlet의 심화 또는 대표주자인 dispatcher-servlet에 대해서 알아보도록 하겠습니다. 1. Dispatcher-Servlet(디스패처 서블릿)의 개념 [ Dispatcher-Servlet(디스패처 서블릿) 이란? ] 디스패처..
mangkyu.tistory.com
https://yoonbing9.tistory.com/79
Spring MVC의 핵심! FrontController 패턴과 DispatcherServlet
DispatcherServlet이란? Spring MVC에서 프론트 컨트롤러 패턴을 구현한 Servlet이다. Front Controller란? Front Controller가 없었던 시절에는 REST API를 구현할 때, 한 개의 URL에 한 개의 서블릿이 매핑되는..
yoonbing9.tistory.com
'CS > Spring' 카테고리의 다른 글
@Controller / @RestController (0) | 2022.09.04 |
---|---|
Spring의 장점 (0) | 2022.06.16 |
Spring - 3 (0) | 2022.06.04 |
Spring - 1 (0) | 2022.06.02 |