본문 바로가기
728x90

Backend/Spring5

[TDD] Test Double [TDD] Test Double테스트를 위해 실제 구현을 대체하는 대역 객체를 통칭합니다. 종류설명Dummy파라미터 전달용, 실제 동작 없음Fake간단한 실제 동작(예: 인메모리 DB)Stub미리 정의된 응답만 제공SpyStub 기능 + 호출 기록 기능Mock기대 행위 설정 및 호출 검증 1. 예시 코드1-1. Dummy// Dummy 구현: 실제로는 아무런 동작도 수행하지 않음public class DummyPaymentGateway implements PaymentGateway { @Override public void pay(int amount) { // no-op }}class OrderServiceTest { @Test void placeOrder_wit.. 2025. 8. 3.
[Spring] @Value와 @ConfigurationProperties @Value와 @ConfigurationProperties @Value와 @ConfigurationProperties는 외부 설정 값들인 Property들을 주입받아 사용할 수 있게 해주는 어노테이션입니다. 굳이 Java 내부에서 직접 사용하지 않고 외부 설정 파일에 있는 Property 값들을 주입받아서 사용하는 이유는 크게 2가지 이유가 있습니다. 관리하기 편하다. 특정 값(value)이 여러 곳에서 사용할 경우 관리하기 편리해집니다. 예를 들어 실행 환경, 서버 설정 값, 중요 key값들을 예로 들 수 있습니다. Property의 값만 변경하면 사용하는 곳에도 적용되어 유지보수가 용이해집니다. 중요한 정보를 노출시키지 않는다 특정 API들을 사용하기 위해서는 누구인지 식별하기 위한 API key가 .. 2023. 7. 9.
[Spring] Bean Validation과 Custom Validation Bean Validation 클라이언트의 요청 값에 대한 유효성 검사로 잘못 입력된 값에 대한 처리를 할 수 있는 유효성 검사 표준 기술입니다. 개발을 진행하다 보면 특정 요청 값이 필수(null, 빈문자 제외), 최소 문자열 길이, 최소 값, 최대 값 등 필요한 데이터 검증이 필요할 때가 있는데 Bean Validation은 일반적으로 많이 사용하는 제약 조건들이 제공하기 때문에 쉽게 어노테이션으로 유효성 검사를 할 수 있도록 도와줍니다. 만약 Bean Validation을 사용하지 않으면 어떻게 될까요? 위 이미지에서 볼 수 있듯이 Bean Validation을 사용하지 않으면 요청 값에 대한 Validation Code를 비즈니스 로직에서 찾아야 하는 문제가 발생합니다. 만약 코드 컨벤션이 정해져 .. 2023. 7. 8.
[Spring] HTTP 요청 데이터 바인딩(@RequestParam, @ModelAttribute, @RequestBody, @RequestHeader) HTTP 요청 데이터 바인딩 클라이언트가 서버로 요청을 보낼 때는 일반적으로 요청에 필요한 데이터를 path parameter, request variable, body, header 등에 실어서 요청합니다. Spring에서는 요청 데이터를 바인딩할 수 있는 어노테이션들을 제공하는데 주로 사용하는 어노테이션은 @PathVarible, @RequestParam, @RequestBody, @ModelAttribute, @RequestHeader 등이 있습니다. 1. 경로 변수(Path Variable) 바인딩 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface PathVariable { .. 2023. 7. 2.
728x90