국비 내용 정리/Spring

국비 63일차 내용정리 (Spring MAV)

개발자가 되고 싶은 곰 2024. 10. 10. 22:59

요청 줄이기
mypage.do 를 Get 으로 요청하면 
해당페이지로 이동시켜줘!

mypage.do 를 Post로 요청하면
마이페이지의 내용을 UPDATE 해줘
-> 요청을 줄이면서 오버로딩을 통해 메서드명 줄이기까지 가능하다

 

회사마다 다르지만
해당 요청사항이 무슨 방식(Get,Post)로 오는지를 무조건 기입해달라고 할 수 있다.

 

경량화를 위해 ModelAndView 보다는 Model 로 대신하여 사용할 수 있다.
return 반환 값이 ModelAndView -> String으로 변경되어 가벼워 진다.

 

redirect : 없으면
VR 가 개입
VR 가 포워드가 디폴트
보낼데이터가 있음
페이지로 이동(==V 로 이동)

redirect : 있으면
VR 가 개입 X
리다이렉트임
보낼데이터 없음
.do(==C로 이동)

Model에 있는 것 뿐만 아니라.
-> JVM 메모리 내에서 사용되는 것이기 때문에
-> 컨테이너 관리하에 매개 변수로 사용되고 있는 DTO, model 등의 사용이 가능하다.
이때 DTO 등을 꺼내올 수는 있지만, 
model 로 넘기는 것을 권장하는 이유 : View 프론트에서 관리할때 DTO, DB 개념을 모를 수 있기 때문이다.

 


 

  1. DAO 가 굳이 매개변수자리에 있어야하나?
  2. 무언가를 인자로 삼으면 결합도가 높아진다.
    • 개발을 하면 가장 변동이 심한것중하나가 DBMS이다.
    • 예상동시이용인원 <<< 실제 인원이 ↑ 이때 DBMS를 수정한다.
    • DBMS 이관한다면 DAO가 변경됨
    • DAO를 인자로 작성하면 이관작업할때마다 코드를 변경해야한다.
    • (MySQL BoardDAO, Oracle BoardOracleDAO, MariaDB BoardMariaDAO)


DAO 를 멤버변수로 위치시킴
여전히 이관작업할때마다 코드를 변경해야함
-> 컴파일 >> 결합도가 여전히 높다.


Service 를 멤버변수로 위치시킴
>> DAO를 멤버변수로 삼고있다는것이 특징
이관작업시 Controller.java에 변경사항 XXX
컴파일XXX >> 결합도가 낮아진다.

 


 

Spring 기반의 자체 프레임워크를 사용하는 기업에서는
[ 2-Layerd 아키텍처 ] 라는 명칭으로 사용할 수 있다.

  -> 사용하는 이유가 new 순서를 컨트롤하기 위해 고안된 아키텍처(구조)
1) Service 레이어를 추가했으니
2) @Service == new Service 를 먼저 해주면 어떨까?
3) 또 다른 스프링 컨테이너(== 루트 컨테이너)를 추가
     web.xml 서블릿 컨테이너(== 톰캣)
     ds-servlet.xml 스프링 컨테이너
     applicationContext.xml 스프링 컨테이너(== 루트 컨테이너)
     위 3개의 컨테이너는 Spring 프레임 워크에서 기본으로 사용한다.
4) /WEB-INF/applicationContext.xml 를 참고하여 돌아가는 루트 컨테이너
    이때 IOException parsing XML document 가 발생하면 -> XML 을 찾을 수 없다는 의미이다.
    1- WEB-INF 하위에 xml 파일을 생성하기
    2- applicationContext.xml 이 저장된 위치를 알려주기 ◀ 회사에서는 2번 방식을 많이 사용한다.

web.xml 에서 2번 적용하는 방식은 아래와 같다.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextCleanupListener</listener-class>
</listener>

이때 applicationContext.xml 에는 biz(Model,DTO,DAO) 내용을 작성하고
ds-servlet.xml 은 프론트단에서 볼 수 있는 View.(Controller등) 내용을 작성한다.

728x90