728x90
DI의 종류는 어떤 것이 있고, 이들의 차이는 무엇인가요?
DI의 종류에는 Constructor Injection(생성자 주입)과 Field Injection(필드 주입), Setter Injection(수정자 주입)이 있음
1. 생성자 주입
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@Component
public class ABean {
private BBean b;
public ABean(BBean b) {
this.b=b;
}
public void bMethod() {
b.print();
}
}
|
cs |
생성자를 위한 빈 주입은 위와 같이 생성자의 매개변수로 의존 주입할 빈을 매개변수로 넣어준다. 스프링 4.3 버전 이후로는 생성자 의존주입에 @Autowired를 넣을 필요는 없다.
2. 필드 주입
1
2
3
4
5
6
7
8
9
10
11
|
@Component
public class ABean {
@Autowired
private BBean b;
public void bMethod() {
b.print();
}
}
|
cs |
보통 위와 같이 필드에 의존주입할 빈을 선언하고 @Autowired를 붙여 빈 주입을 한다.
3. 수정자 주입
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@Component
public class ABean {
private BBean b;
@Autowired
public void setB(BBean b) {
this.b = b;
}
public void bMethod() {
b.print();
}
}
|
cs |
세터를 이용한 빈주입이다. 의존 주입할 빈 객체에 대한 Setter를 만들어주고 @Autowired를 붙여준다.
Autowiring 과정은?
컨테이너에서 타입(인터페이스 또는 오브젝트)을 이용해 의존 대상 객체를 검색하고,
할당할 수 있는 빈 객체를 찾아 주입한다.
Spring Web MVC의 Dispatcher Servlet의 동작 원리에 대해서 간단히 설명해주세요.
1. 클라이언트에서 DispatcherServlet으로 요청이 들어옴
2. DispatcherServlet가 HandlerMapping에게 컨트롤러 요청 -> 처리 컨트롤러 리턴
3. DispatcherServlet가 Controller에게 처리 요청 -> ModelAndView 리턴
4. DispatcherServlet가 ViewResolver에세 View 객체 리턴 -> View 리턴
5. DispatcherServlet가 View에게 응답 생성 요청
6. JSP 생성(JSP든 뭐든 뷰 생성)
프론트 컨트롤러 패턴이란 무엇인가요?
- DispatcherServlet이라는 프론트 컨트롤러를 이용하여 웹MVC 패턴을 이용하는 것
- Front Controller Pattern.
- act는 나 뭐뭐좀 해줘~ + 데이터 였음!(예를 들면 로그인을 하기 위해서는 아이디와 비번을 갖고 오겠지?)
- 원래는 act가 뭔지 if문 엄청 돌리고 데이터를 처리하기 위해서 그 안에 메서드를 만들었음
- 잘 생각해보면 act 와 data를 분리 시킬 수 있겠지??
- act는 doXXX() 메서드 안에 있어야됨. 근데 data 관련은 그 안에 없어도 됨
- 누가하든 코드가 똑같은거? → if(act가 뭐냐) 이 코드, 그리고 act가 뭐인지에 따라 무슨 메서드를 호출할지(forward, redirect) 이건 똑같음! → 얘네는 자동화 가능!
- 자동으로 되는 애들은 프레임워크로 가능(컨트롤러 전에 제어가 가능? → Front Controller)
- 진짜 내가 해야될 일 → 데이터 처리에만 집중 가능!
728x90