We will find a way, we always have.

-interstellar

Spring 6

[Spring] 스프링 빈 프로퍼티 애노테이션 @Profile, @Order

스프링 빈 프로퍼티 애노테이션스프링 빈이란?스프링 빈은 스프링 IoC 컨테이너에서 관리하는 컴포넌트이다. IoC는 Inversion Of Control의 약자로 제어의 역전을 의미한다.이는 프로그래머가 작성한 프로그램의 흐름 제어를 다른 무언가에게 위임하는 디자인 패턴이다.스프링 빈을 등록한다는 것은 프로그래머가 작성한 객체의 생명 주기 관리를 스프링 프레임워크에게 넘긴다는 것이다.빈을 등록하는 방법으로는 @Component 애노테이션을 사용하여 컴포넌트 스캔을 통해 자동으로 등록하는 방법과 설정 클래스에 @Configuration 애노테이션을 붙여 @Bean 애노테이션을 통해 수동으로 등록하는 방법이 있다.이 외에도 등록하는 방법이 여럿 있지만 자주 사용되는 방법은 아니다. 이번 글에서 소개할 내용은..

Spring 2024.11.14

[Spring] 우리집을 못 찾겠군요 (feat: @RestControllerAdvice, @Order)

배경지식우리 코딩해듀오는 예외 상황을 좀 더 구체적으로 표현하고, 또 테스트도 정확하게 하고자 커스텀 예외를 사용하기로 컨벤션을 정했다. 그리고 각 도메인 별로 패키지를 나누어 각 패키지 마다 대빵 예외가 있고, 이 대빵 예외를 상속하는 세부 예외들이 있었다. @RestControllerAdvice도 각 패키지 안에 들어가 대빵 예외들을 잡아주고 common 패키지에선 최상위 예외인 Exception을 잡아주는 구조였다.    초반에는 각 도메인의 대빵 예외가 CoduoException이라는 찐대장 예외를 상속하는 구조였다가 너무 깊은 상속구조를 갖는 것 같아 CoduoExcpetion은 제거하였다.   문제 상황AccessCode로 페어룸을 찾는데 실패하면 PairRoomNotFoundException..

Spring 2024.08.18

[Spring] 액추에이터 Actuator

프로덕션 준비 기능지금까지 미션을 하면서 열심히 돌아가는 쓰레기를 목표로 코드를 짜고 그 다음에 열심히 또 리팩터링을 해 클린코드로 만들어 나갔다. 하지만 이제는 비즈니스 요구사항만 충족할 게 아니라 서비스에 문제가 있는지 없는지 모니터링해야 한다.   프로덕션을 운영 환경에 배포할 때 준비해야 하는 것들이 있는데 이들을 프로덕션 준비 기능이라고 한다. 지표(metric), 추적(trace), 감사(auditing)모니터링 애플리케이션이 잘 살아있는지, 커넥션 풀이 얼마나 사용되고 있는지 등을 확인할 수 있다.  액추에이터 의존성 추가 스프링 프로젝트에 액추에이터를 설정하려면 아래처럼 의존성을 추가해주면 된다.   implementation 'org.springframework.boot:spring-bo..

Spring 2024.08.05

[Spring] 애플리케이션과 테스트 동시에 실행하기(RestAssured 포트설정)

레벨2에선 이제 스프링을 사용하기 시작했다.멋들어지게 스프링을 사용하고 요구 사항을 만족하여 테스트를 돌려봐도 다 잘 돌아갔다. 하지만 애플리케이션을 띄우고 테스트를 실행하면 에러가 발생했다.   왜일까 문제 해결을 위해 고민해보자.  🙋‍♂️: 애플리케이션을 띄우지 않고는 테스트가 성공했으니, 테스트를 돌릴 때마다 애플리케이션을 종료하고 테스트를 돌리면 되지 않나요? 👨‍💻: 애플리케이션을 종료하면 안되는 상황이거나 애플리케이션을 재가동 시킬 때 많은 시간이 소모된다면? 🙋‍♂️: 흠... 어쩔 수 없네요. 다른 방법을 찾아보죠. 에러 로그를 쭈욱 내려다보면    org.springframework.boot.web.server.PortInUseException 이라고 다시 말해 포트는 이미 사용..

Spring 2024.05.04

[Spring] @ResponseBody vs ResponseEntity

서론스프링을 사용할 때 컨트롤러에서 직렬화할 데이터를 반환할 때 @ResponseBody를 사용할 지 ResponseEntity를 사용할 지 토론이 이어졌다.무엇을 사용하는게 좋을 지 살펴보자.본론@ResponseBody @ResponseBody는 스프링 버전 3.0에 등장한 녀석이다. 이 녀석을 사용한다면 반환값을 HttpMessageConverter를 통해 응답 바디로 직렬화할 수 있다.    위 코드는 스프링 @ResponseBody의 코드이고 아래는 @ResponseBody 사용 예시이다.  /reservations 로 GET 요청이 올 때 동작하는 메서드인데 @ResponseBody 사용방법이라고 해놓고 @ResponseBody 애노테이션은 보이지도 않는다. 무슨일인걸까??!!! 정답은 @Res..

Spring 2024.04.21