JUnit Test

  • @WebMvcTest
  • @Autowired MockMvc
  • @MockBean ~Service;
  • @BeforeEach, @BeforeAll
  • MockHttpSession
  • MockMvc.perform()
  • andExcept() > jsonPath, xPath

HtmlUnit : HTML 템플릿 뷰 테스트를 보다 전문적으로 하기 위한 라이브러리

  • WebClient : URL 기반 페이지 호출 후 해당 응답을 페이지의 시각(구조)으로 분석하여 테스트 결과를 확인할 수 있음 (MockMvc 의 경우는 데이터 기반이라 API 에는 유용하나, HTML 파일을 테스트 하기엔 다소 부적합하다)

Spring

  • HttpMessageConverters : Request Body 를 주어진 정책의도대로 파싱하고 POJO 등 로직에서 활용할 수 있는 형태로 반환하고, 또 반대로 역파싱하여 JSON, XML 의 String 형태로 Response Body 에 반환하는 라이브러리
  • ViewResolve : 클라이언트의 accept 요청 형태(application/json, application/xml 등)에 따라 HttpMessageConverter 를 분기하여 호출할 수 있게 관리하는 라이브러리(API 가 아닌 페이지 반환의 경우에는 올바른 HTML 템플릿엔진을 검색하여 반환하는 역할도 할 것이다)
  • webjar : 프론트엔드의 정적 컨텐츠를 jar 의 형태로 프로젝트에 포함시켜 프론트에서 “/webjars/jquery/~/jquery.min.js” 의 형태로 호출할 수 있다. jar 이므로 Maven 이나 Gradle 을 통한 디펜던시 설정도 가능하다.

네트워크

  • 304 Not Modified(정적 컨텐츠 캐싱) : 정적 컨텐츠 호출 시 Last Modified Date 를 반환하고, 클라이언트를 이를 저장하고 있다가, 서버에 동일한 컨텐츠 호출 시 LMD 를 함께 날리고 서버의 값과 동일하다면 수정이 없었으므로 본문 없이 304 Not Modified 를 응답으로 반환한다
  • HATEOAS(Hypermedia As The Engine Of Application State) : 데이터 응답 시, 데이터에 대한 메타데이터 링크를 함께 전달할 수 있는 통신 데이터구조 관련 정책 (잘짜여진 API 서비스에는 나이스할 것 같으나, 널리 쓰이진 않는다)
  • SOP(Single Origin Pocliy), CORS(Cross-Origin Resource Sharing) : 각 클라이언트는 기본적으로 본인의 Origin(프로토콜 + 도메인 + 포트) 내에서만 호출이 가능하도록 제한(단일 Origin 정책 = SOP) 하고 있으며, 이를 우회하기 위한 정책이 CORS(교차 출처 리소스 공유) 이다. Spring 에서는 RequestMapping, Controller 또는 Global 하게 CORS 정책 범위 및 설정값을 지정할 수 있다.

DB

  • PostgreSQL : RDB 으로 MySQL 과 크게 다를게 없어보인다.

참고

https://www.inflearn.com/course/스프링부트