728x90
반응형
SMALL

DI (Dependency Injection)

- 의존성 주입

  - 한 객체가 다른 객체를 사용할 때 의존성이 있다고 함

- 런타임 시 의존 관계를 맺는 대상을 외부에서 결정하고 주입해 주는 것

- 스프링 프레임워크는 DI 기능을 지원해주는 프레임워크

DI 장점

- 의존성 주입을 인터페이스 기반으로 설계하면, 코드가 유연해짐

  - 느슨한 결합도 (loose coupling)

- 변경에 유연해짐

  - 결합도가 낮은 객체끼리는 부품을 쉽게 갈아끼울 수 있음

DI 프레임워크

예를 들어 A가 직접 B에 의존하도록 하기 보다는 중간에 Interface를 두어서 결합도가 느슨해지도록 하여 변화에 영향을 덜 받게 되도록 설계를 하기도 합니다.

Runtime시 의존관계를 맺는 대상을 외부에서 결정하고 주입해 주는 것을 의미합니다.

또한 변경에 유연해지게 설계할 수 있으며 결합도가 낮은 객체 끼리는 부품을 쉽게 갈아 끼울 수 있습니다.

또한 테스트하기 좋은 코드가 될 수 있습니다.

 

 

728x90
반응형
LIST

'MVC' 카테고리의 다른 글

MVC 프레임워크 개념 소개  (3) 2024.10.11
프런트 컨트롤러 개념 소개  (8) 2024.10.10
리플랙션 API 개념 소개  (6) 2024.10.10
728x90
반응형
SMALL

스프링 웹 MVC 프레임워크

요청을 DispatcherServlet이 해당 요청을 받아서 HandlerMapping을 통해서 적절한 핸들러를 찾게 됩니다.

여기에서 핸들러라고 하면 컨트롤러라고 이해하시면 좀 더 이해가 쉬울 것 같습니다.

그리고 나서 핸들러 어댑터를 통해서 적절한 어댑터에서 컨트롤러를 시행합니다.

그리고 컨트롤러는 해당 리턴 값으로 뷰 네임을 리턴하게 됩니다.

그러면 DispatcherServlet이 해당 뷰 네임을 가지고 뷰 리절브를 통해서 뷰 객체를 리턴 받게 됩니다.

그런 다음에 최종적으로 뷰 렌더를 통해서 응답 값을 리턴하게 됩니다.

애노테이션 기반 MVC 프레임워크

- DispatcherServlet

- AnnotationHandlerMapping

- HandlerAdapter

- ViewResolver

 

 

728x90
반응형
LIST

'MVC' 카테고리의 다른 글

DI 개념 소개 및 장점  (6) 2024.10.11
프런트 컨트롤러 개념 소개  (8) 2024.10.10
리플랙션 API 개념 소개  (6) 2024.10.10
728x90
반응형
SMALL

프런트 컨트롤러 패턴

- 모든 요청을 단일 handler(처리기)에서 처리하도록 하는 패턴, 그렇기 때문에 중앙 집중식 요청 처리 매커니즘을 가지고 있습니다.

- 스프링 웹 MVC 프레임워크의 DispatcherServlet(프런트 컨트롤러의 역할)이 프런트 컨트롤러 패턴으로 구현돼 있음

 

Forward

- 서블릿에서 클라이언트(웹 브라우저)를 거치지 않고 바로 다른 서블릿(또는 JSP)에게 요청하는 방식, URL주소가 달라지지 않음

- Forward 방식은 서버 내부에서 일어나는 요청이기 때문에 HttpServletRequest, HttpServletResponse 객체가 새롭게 생성되지 않음(공유됨)

- RequestDispatcher dispatcher = request.getRequestDispatcher("포워드 할 서블릿 또는 JSP") 

dispatcher.forward(request, response)

Redirect

- 서블릿이 클라이언트(웹 브라우저)를 다시 거쳐 다른 서블릿(또는 JSP)에게 요청하는 방식

- Redirect 방식은 클라이언트로부터 새로운 요청이기 때문에 새로운 HttpServletRequest, HttpServletResponse 객체가 생성됨

- HttpServletResponse 객체의 sendRedirect() 이용

 

728x90
반응형
LIST

'MVC' 카테고리의 다른 글

DI 개념 소개 및 장점  (6) 2024.10.11
MVC 프레임워크 개념 소개  (3) 2024.10.11
리플랙션 API 개념 소개  (6) 2024.10.10
728x90
반응형
SMALL

Reflection 소개

- 힙 영역에 로드돼 있는 클래스 타입의 객체를 통해 필드/메소드/생성자를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 API (class.class, instance.getclass, class.fullname)

- 컴파일 시점이 아닌 런타임 시점에 동적으로 특정 클래스의 정보를 추출해낼 수 있는 프로그래밍 기법이기도 합니다.

- 주로 프레임워크 또는 라이브러리 개발 시 사용됨

사용법 링크 : https://www.baeldung.com/reflections-library

* 참고로 jvm의 클래스 로더는 클래스 파일에 대한 로딩이 끝나면 클래스 타입의 객체를 생성해서 메모리 힙 영역에 저장합니다.

Reflection 사용하는 프레임워크/라이브러리 소개

- Spring 프레임워크 (ex. DI)

- Test 프레임워크 (ex. JUnit)

- JSON Serialization/Deserialization 라이브러리 (ex. Jackson)

- 등등

실습

- @Controller 애노테이션이 설정돼 있는 모든 클래스를 찾아서 출력한다.

 

728x90
반응형
LIST

'MVC' 카테고리의 다른 글

DI 개념 소개 및 장점  (6) 2024.10.11
MVC 프레임워크 개념 소개  (3) 2024.10.11
프런트 컨트롤러 개념 소개  (8) 2024.10.10

+ Recent posts