메모장

Spring 에 대한 간단 정리 본문

Spring/개념정리

Spring 에 대한 간단 정리

Itchild 2024. 6. 21. 09:21
728x90
반응형

 

중요한 부분들을 다시한번 간단하게만 정리해보자

 

 

WEB-INF 에 있는 DispatcherServlet-servlet 파일에 대해 알아보자

원래 DS 한테 멤버변수 의존관계로 HandlerMapping 과 ViewResolver 가 있었는데 그걸 어노테이션으로 바꿔보는 연습을 진행하였다.

 

implements@ (어노테이션)으로 바뀌면서 생략되고 생략이 되면서 메서드 강제가 사라져서 메서드 시그니처 변경이 가능해진다. 그래서 메서드 명도 바꿀수 있고 하나의 컨트롤러에 비슷한 기능의 메서드들을 같이 정리하는게 가능하다 !

 

비슷한 로직끼리 같은 컨트롤러 에 있기 때문에 응집도가 높아진다.

 

  • @ (어노테이션)에선

HadlerMapping (핸들러 맵핑)의 역할을 @RequestMapping 이 해준다.

value 입력하고 내가 무슨 요청을 받았을때 수행 할 것인지, method 에 따라 get, post방식 요청 인지를 구분하여 에러처리 및 보안 이유로 종종 사용되기도 한다. 이와같이 메서드 속성을 추가로 활용할 수 있다.

 

 

  • Command(커맨드 객체)

xxxController 의 인자를 Command (커맨드 객체) 라고 하는데

new (객체화)와 동시에 request 에서 setter를 호출하여 자동 맵핑 되는 것까지 수행한다.

 


서버가 동작하는 흐름을 처음부터 따라가 보자 !

1 . index.jsp 페이지에서 main.do (*.do) 에 대한 요청을 시작한다.

2 . 그러면 DispatcherServlet에서 init 한다. 시작됐다. << MVC 2패턴 (FrontController)의 기능과 같다.

3 . 그래서 DispatcherServlet-servlet.xml 이 필요하다. (그게 WEB-INF 하위에 있어야 한다.)

DS 이 동작을 하려면 해당 xml이 필요하다.

@ (어노테이션), XML 둘다 일단 만들어야 한다.

 

4 . main.do 를 따라 controller 로 이동해본다.

이 메서드를 수행하려면

메서드 수행주체인 컨트롤러가 new 되어있어야 한다.

이 POJO (우리가 만든 클래스들은 POJO 이다.) 가 NEW 가 될려면 스프링 컨테이너가 필요하다.

 

정리 ★
pojo 라서 main()가 수행되려면  주체(객체)인 MainController 객체가 new 되어야함
↓
new를 해주려면 , pojo니까 스프링 컨테이너가 필요함 
↓
컨테이너가 동작하려면 뭔지 모르지만 일단은 xml이 필요 
↓
결론 xxx.xml이 없으면 동작 안됨 
 

 

 

@ 어노테이션 방식을 쓰려면

 

 

<context:component-scan base-package="com.spring.view.controller" />

DS 서블릿에 추가해야 된다.

 

@ 어노테이션을 사용하게 되면 내장된 ViewResolver 가 디폴트로 foward 방식을 사용한다.

(데이터를 가지고 이동하는 방식 ) ↔ 반대 redirect

거의 대부분 forward방식을 디폴트로 쓴다.

 

=================================

 

@ (어노테이션) 방식을 사용할때 ,

내장된 VR 는 디폴트로 forward 방식을 사용함 !

리다이렉트 방식(전달할 데이터 없이 가볍게 이동) 을 사용하고 싶다면, "redirect: "

을 쓴다. prefix, suffix는 없다. 설정이 안되어있음

근데 포워딩이 설정 되어있어서 리다이렉트로 보내려면 redirect 를 붙여 주면 된다.

 

=================================

 

728x90
반응형