본문 바로가기

Spring5

[Spring] RestAssured, RestDocs로 API 문서 자동화 하기 with 공식문서 API 명세서는 애플리케이션의 동작, 소통을 위해 빠질 수 없는 부분이다. API 명세서(문서)를 통해 API의 기능, 사용방법, 제한사항 등을 명확하게 이해할 수 있다.여러 작업자가 함께 일한다면(ex. 프론트엔드 - 백엔드) API 문서를 통해 API를 올바르게 호출하고 필요한 데이터를 교환할 수 있다.제대로된 명세서가 있다면 빠른 소통이 가능해진다.그러나, 기능이 추가/변경될 때 API 명세서도 지속적으로 업데이트 되지 않는다면 제대로 된 소통이 어려워진다. 실제로 지금 구현하던 애플리케이션에서도 수정이 생겼을 때마다 명세서를 수정하다가, 어느순간 기능 구현만 신경쓰고 문서화를 놓치게 되었다. 그래서 문서화를 수동으로 작성하기 보다는 자동화하는 것이 낫겠다는 생각을 했다. 문서 자동화를 할 수 있는.. 2024. 6. 9.
[Spring, JUnit5] 테스트 격리: DB 초기화 (InitializingBean, BeforeEachCallback) 테스트를 진행할 때, 테스트간에 영향을 주어서는 안된다.예를 들어, 삽입 테스트 이후 조회 테스트가 실행되더라도 이전 삽입 테스트 결과에 영향을 받지 않아야한다.그래서 우테코에서 처음 제공되었던 테스트 코드에는 @DirtiesContext가 설정되어있었다.(@DirtiesContext는 간단히 말하면 테스트마다 컨텍스트를 새로 로드하는 설정이다. 그래서 상대적으로 많은 시간이 소요된다.) 테스트 코드가 늘어날수록 테스트에 소요되는 시간이 늘어났고, 그 몇 초 조차 기다리기 싫어진 나는 @Sql을 사용해 테스트 데이터를 초기화하는 방법을 적용했었다.아래와 같은 방식으로 적용 가능한데, 해당 테스트 클래스를 실행할 때 reset_test_data.sql을 실행하겠다는 의미이다. 실행되는 옵션으로 BEFORE.. 2024. 5. 25.
[Spring] @Controller와 @RestController 차이, 그리고 ResponseEntity 드디어 스프링 관련된 미션이 시작되었다. 예전에 공부를 할 때에는 주어진 자료를 따라 치기에 집중했던 것 같아서, 이번에는 구체적인 원리나 차이점 등을 좀 더 살펴보면서 학습하고자 한다. 그 중 이번에 가장 먼저 다룰 내용은 @Controller와 @RestController이다. 컨트롤러란, 클라이언트의 요청을 직접적으로 전달받는 엔드포인트(Endpoint)이다. 공식 문서에서 Spring MVC 컨트롤러에 대한 내용은 아래와 같이 설명하고 있다. Spring MVC provides an annotation-based programming model where @Controller and @RestController components use annotations to express request ma.. 2024. 4. 17.
35일차: Architecture, Spring Boot ❯ 아키텍처(Architecture) 어떤 시스템을 구축할 때 해당 시스템의 비즈니스적 요구사항을 만족하는 전체 시스템 구조를 정의하는것을 의미한다. 이미지나 도형을 사용해 표현하는 경우가 많다. 시스템 아키텍처 : 하드웨어와 소프트웨어를 모두 포함한 어떤 시스템의 전체적 구성을 표현한것 이를 통해 해당 시스템이 어떤 하드웨어로 구성되는지, 어떤 소프트웨어를 사용하는지 대략적으로 알 수 있다. 구성요소간의 상호작용이 어떻게 이루어지는지, 시스템이 정상적으로 동작하기 위한 원리 등을 표현할 수 있다. 아래 그림은 채팅 서버 시스템 아키텍처를 간단하게 나타낸 예시이다. 소프트웨어 아키텍처 : 소프트웨어의 구성을 큰 그림으로 표현한것 해당 소프트웨어가 어떤 기술을 지원하고 어떤 기능을 사용할 수 있는지 대략적.. 2023. 4. 3.
34일차: Spring Framework ❯ Framework Framework 란, 소프트웨어의 설계와 구현을 위해 재사용이 가능하게끔 협업화된 클래스를 제공하는 것을 말한다. 쉽게 표현하면 프레임(틀)을 만들기 위한 도구를 제공한다고 생각하면 된다. 이전에 사용했던 예시로는 Collection Framework 가 있다. 기본 구조가 만들어져있으므로 효율적으로 코드를 작성할 수 있다. 정해진 규약이 있어서 앱을 효율적으로 관리할 수 있다 해당 Framework 에 대한 학습이 필요하다. 정해진 규약이 있으므로 자유로운 개발이 어렵다. 여기에서, 비슷한 역할을 했던 Library 를 생각해볼 수 있다. Framework 와 Library 는 명백히 다른 개념으로, 아래와 같은 차이점을 가진다. Framework : 뼈대를 구성하는 것. 주도권.. 2023. 4. 2.