목록2024/04 (6)
나의 개발일지
프로젝트를 하면서 밥먹듯이 하는게 컴파일 빌드 실행 과정인데 부끄럽게도 빌드가 정확히 무슨 역할인지는 잘 모르고 있었던 것 같다. GitHub Actions로 CI코드를 작성하면서 build를 하는 코드 부분에 gradle build와 gradlew build의 차이점을 찾아보다가 빌드부터 제대로 공부하기로 하였다. 개발자가 코드를 작성하여 서버에 작성하는 것 - "배포"배포(Deploy)를 하기 위한 과정 - "빌드" 빌드란 ?컴파일된 소스 코드를 실행 가능한 애플리케이션으로 만들어주는 과정. ex) Java 프로젝트를 진행한다면 개발자가 작성한 A.jaca와 열어가지 정적 파일에 해당하는 resource가 존재. - 빌드 : 소스코드(.java)를 컴파일해 바이트코드(.class)로 변환하고 reso..
개인 프로젝트의 CI/CD를 적용하기 위해 tool들을 조사해보았다. CI / CD 기본 개념 (tistory.com) CI / CD 기본 개념 CI (Continuous Integration) : 지속적인 통합 -> 빌드와 테스트 자동화 모든 개발이 끝난 후 코드 품질을 관리하는 고전적인 방식의 단점을 해소하기 위해 나타난 개념 새로운 코드 변경 사항이 정기적 soni-developer.tistory.com GitHub Actions와 Jenkins의 자료를 가장 많이 찾아볼 수 있었다. 그래서 이 두 개의 차이점을 비교해서 어떤 것을 적용할지 고민해보았다. Jenkins 자유도 + 유연성 GitHub Actions 설정 간편 서버 설치 필요 클라우드에서 동작, 어떤 설치도 필요 없음. 작업이 동기적으..
아직 RestDocs는 만들지 않은 상태로 회원가입 성공 컨트롤러 테스트를 작성하였다. 코드는 아래 @WebMvcTest(value = MemberController.class, excludeFilters = { @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = SecurityConfig.class), @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = JwtAuthenticationFilter.class) } ) @AutoConfigureRestDocs class MemberControllerTest { @MockBean private MemberServiceImpl..
테스트를 만들 서비스 클래스에서 Ctrl + Shift + T 를 눌러서 테스트 파일을 생성한다. 컨트롤러 테스트에서는 상단에 @WebMvcTest(XxxController.class)를 붙여주었고 @Autowired를 이용해 Mockmvc나 ObjectMapper를 주입받았다. 이것들은 이미 만들어진 Bean을 주입받아서 사용한다. -> @WebMvcTest가 MockMvc를 빈으로 등록해줘서 @Autowired를 통해사용이 가능한 것. * Autowired 스프링 컨테이너에 등록한 빈에게 의존관계주이이 필요할 때, DI(의존성 주입)을 도와주는 어노테이션. 스프링 컨테이너에 빈을 모두 등록한 후, 의존성 주입 단계가 이루어짐. 이 때 @Autowired 어노테이션이 부여된 메서드가 실행되며 필요한 인..
RestDocs란 ? Spring Rest Docs는 Spring MVC를 사용하는 REST API를 문서화하는데 도움을 줌. Spring Rest Docs는 Spring MVC의 테스트를 실행하면서 생성된 응답을 기반으로 문서를 생성. API Spec과 문서화를 위한 테스트 코드가 일치하지 않으면 테스트 빌드를 실패하게 되어 테스트 코드로 검증된 문서를 보장할 수 있음. 테스트 코드에서 명세를 작성하기 때문에 비즈니스 로직의 가독성에 영향을 미치지 않음. Spring Rest Docs는 Asciidoctor를 사용하여 문서를 생성. 스프링 프로젝트 팀에서는 Swagger보다 Asciidoctor를 사용하는 것을 권장. Swagger는 어노테이션을 운영코드에 추가해야 함 -> 가독성이 떨어지고 운영코드에..
@AuthenticationPrincipal MemberDetailService의 loadUserByUsername 메서드가 return한 객체를 파라미터로 받아 사용할 수 있도록 해주는 어노테이션. @PostMapping("/request") @RedissonLock public ResponseEntity friendRequest( @RequestBody FriendRequest.Request request, @AuthenticationPrincipal UserAdapter userAdapter) { return ResponseEntity.ok(friendService.request(request, userAdapter)); } 나의 경우에는 친구요청을 걸 때 로그인 한 사용자의 정보를 받아오기 위해 ..