728x90
반응형
- @ResponseBody(or ResponseEntity<T>) 가 있을 때와 없을 때의 동작 방식의 차이점을 말해주세요.2024-11-16 15:31:09@ResponseBody(or ResponseEntity)가 있을 때와 없을 때 차이점@ResponseBody 혹은 ResponseEntity 반환을 사용한다면, 스프링은 컨트롤러에서 반환된 값을 HTTP 응답 본문에 직접 씁니다. 이때 자바 객체를 자동으로 JSON이나 XML 등의 타입으로 직렬화합니다. 만약, 없는 경우에는 스프링은 반환값을 뷰 이름으로 해석합니다. 뷰 이름으로 해석한 이후에, 뷰 리졸버를 사용해 뷰를 찾고 응답합니다.(뷰에 전달할 모델이 있다면, 이를 뷰에 전달하고 응답합니다.)@ResponseBody와 ResponseEntity 반환 중 어떤 방식이 더욱 좋나요? 😀@ResponseBody를 사용하는 경우, 코드를 간결하게 유지할 수 있습니다. 하지만, 상태코드와 헤더를 유연하게..
- [로드맵] Repo Hosting Services2024-11-16 15:27:53Repo 호스팅 서비스는 버전 제어 코드 저장소에 대한 저장, 관리 및 협업 도구를 제공하는 플랫폼이다. 이러한 서비스는 Git, Mercurial 또는 Subversion 과 같은 버전 제어 시스템을 지원하여 개발자가 코드베이스의 변경 사항을 관리하고 추적하며, 다른 사람과 협업, 워크플로를 자동화할 수 있도록 한다. 주요 기능에는 조종 분기 및 병합, 풀 요청, 문제 추적, 코드 검토 및 CI/CD(Dontinuous Integration / Continuous Deployment) 파이프 라인 과의 통합이 포함된다. 인기 있는 repo 호스팅 서비스에는 GitHub, GitLab 및 Bitbucket이 있으며, 각각 다양한 팀 규모와 프로젝트 요구 사항에 맞게 조정된 다양한 수준의 무료 및 유료 기..
- @AllArgsConstructor 과 record 클래스의 차이2024-11-15 15:19:19아마 이 글을 읽는 사람들은 @AllArgsConstructor와 record를 왜 비교하는지 의문일 것이다.이 의문을 가지게 된 이유는 트러블 슈팅으로부터 시작된다. 트러블 슈팅 글을 보고 난 뒤, RequireArgsConstructor 가 final로 선언된 멤버 필드만을 포함한 생성자를 만들어주기 때문에 문제라면 모든 멤버 필드를 만들어 주는 @AllArgsConstructor는 돼야 하지 않을까?라는 의문으로 테스트를 해보았다 결론은 역시 실패하고 말았다.record 클래스도 기본 생성자를 생성하지 않는 것으로 알고 있는데 @AllArgsConstructor와 차이가 뭐지?? 라는 의문이 들어이유를 찾아보니 record 클래스는 애초에 컴파일러에서 기본 생성자가 없으면 자동으로 생성해준다고 한다..
- [트러블 슈팅] 요청 값 Dto에 어떻게 매핑되는가2024-11-15 14:39:43문제 상황Controller@PostMapping("/save")public ApiResponse save(@RequestBody FcmTokenSaveRequestDto requestDto, @AuthenticationPrincipal UserDetails userDetails) { return ApiResponse.success(HttpStatus.OK, fcmTokenMemberService.save(requestDto, userDetails.getUsername()));} 문제 발생 DTO@Getter@RequiredArgsConstructorpublic class FcmTokenSaveRequestDto { private final ..
- @ExceptionHandler 어노테이션은 무엇인가요?2024-11-15 09:34:04@ExceptionHandler란?@ExceptionHandler 어너테이션은 Spring MVC에서 컨트롤러(@Controller)나 전역 예외 처리를 위한 @ControllerAdvice 클래스의 메서드에서 발생하는 예외를 처리하는 데 사용되는데요. 이 애너테이션은 특정 예외를 처리하는 메서드를 지정하거나 메서드의 파라미터로 처리할 예외를 설정할 수 있습니다.어떤 방식으로 동작하나요? 🤔Spring MVC 애플리케이션에서 예외가 발생하면, DispatcherServlet이 적절한 HandlerExceptionResolver를 찾아 예외를 처리합니다. Spring에 기본적으로 등록된 HandlerExceptionResolver는 세 가지가 있으며, 각 리졸버는 우선순위에 따라 예외를 처리합니다. 그 ..
- [로드맵] Version Controller System2024-11-15 09:32:03버전 제어 시스템(VCS)은 시간 경과에 따른 코드나 문서의 변경 사항을 관리하고 추적하여 여러 사용자가 프로젝트에서 효율적으로 협업할 수 있도록 하는 도구이다. 파일에 대한 모든 변경 사항을 기록하여 개발자가 이전 버전으로 되돌리고, 변경 사항을 비교하고, 수정 내역을 유지할 수 있다. VCS는 저장소가 중앙 서버에 호스팅되는 중앙 집중형(예: Subversion)이거나 각 사용자가 저장소의 전체 사본을 갖는 분산형(예: Git, Mercurial)일 수 있다. 버전 제어는 협업을 용이하게 하고, 코드 무결성을 향상시키며, 동시 변경 사항을 원활하게 관리하고 충돌을 해결함으로써 지속적인 통합을 지원한다.
- @Value 어노테이션 사용 시 주의할 점을 설명해주세요.2024-11-14 20:15:42@Value 어노테이션 주의점@Value은 설정 파일에 설정한 값을 주입할 수 있는 어노테이션입니다. 첫 번째로 주의해야 할 부분은 주입 시점입니다. @Value 어노테이션은 대상 컴포넌트가 스프링 빈으로 등록되고 의존 관계를 주입할 때 동작합니다. 따라서 환경 변수를 주입받는 대상 클래스에 @Component 어노테이션을 붙여주지 않는다면 해당 클래스는 컴포넌트 스캔이 대상이 되지 않아 스프링 빈으로 등록되지 않고, @Value 어노테이션 또한 동작하지 않습니다.또한 상황에 따라서 적절한 주입 방식을 선택해야 하는데요. 빈을 주입받을 때와 마찬가지로 @Value 어노테이션을 사용할 때도 필드 주입, 생성자 주입, setter 주입 등의 방식을 사용할 수 있습니다. 따라서 이들의 장단점을 비교하고, 상황..
- [로드맵] Git2024-11-14 20:00:52Git은 모든 규모의프로젝트를 빠르고 효율적으로 처리하도록 설계된 분산 버전 제어 시스템이다.2005년 리누스 토발즈가 만든 Git은 소프트웨어 개발 중에 소스 코드의 변경 사항을 추적하여 여러 개발자가 비선형 개발에서 함께 작업할 수 있도록 해준다. Git은 모든 변경 사항의 전체 기록을 유지 관리하여 버전 간의 쉬운 롤백 및 비교를 가능하게 해준다. 분산된 특성으로 인해 각 개발자는 리포지토리의 전체 사본을 가지고 있어 오프라인 작업과 백업이 가능하다. Git 의 주요 기능에는 분기 및 병합 기능, 커밋을 위한 스테이징 영역, 풀 요청과 같은 협업 워크플로 지원이 포함된다.속도, 유연성, 강력한 분기 및 병합 기능으로 인해 소프트웨어 개발에서 가장 널리 사용되는 버전 제어 시스템이 되었으며, 특히 오..
728x90
반응형