스프링부트

Error/트러블슈팅

[Trouble Shooting - CORS] Spring Boot CORS 와일드카드(*) 설정방법

💥 개요 사이드 프로젝트 진행 시 항상 문제가 되던건, CORS였습니다. CORS란 CORS(Cross-Origin Resource Sharing)는 클라이언트(웹 브라우저)에 의해 제어되는 HTTP 기반 보안 메커니즘입니다. 이를 통해 서비스(API)는 클라이언트가 요청할 수 있는 오리진 이외에 요청할 수 없는 오리진도 표시할 수 있습니다. 한 오리진에서 로드한 웹사이트(HTML 문서 또는 JS 스크립트)가 다른 오리진의 리소스와 상호 작용할 수 없게하는 SOP(Same-origin policy)와 함께 설계되었습니다. CORS는 일부 크로스 오리진 요청을 명시적으로 허용하고 다른 요청은 거부하는데 사용됩니다. CORS는 기본적으로 웹 브라우저에서 구현되지만 API 클라이언트에서도 옵션으로 사용할 수 ..

Error/트러블슈팅

[Trouble Shooting - RequestBody와 생성자] 스프링부트 LocalDateTime JsonFormat 안됨

개발 중 있었던 일, 통합 API 테스트 코드 작성 중 특정 도메인의 생성 테스트 코드가 동작하지 않고 아래와 같이 오류가 발생했다. com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDateTime` from String "2023-05-19 16:51:32230519 16:51:32": Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text '2023-05-19 16:51:32230519 16:51:32' could not be parsed at i..

Languege/Java & Spring

Junit5 상속관계에서 BeforeEach 순서

최근 TDD와 테스트 코드에 사랑에 빠져 사내 프로젝트에 테스트 커버리지를 높이고 있는데 Api 테스트를 할때 보통 로그인이 전제가 되어야 하는데, 도메인 별 테스트를 만들때마다 계속 반복되는 로그인을 하는 로직을 넣는 바보같은 행동을 하고 싶지 않아서 ApiTest를 만들어두고 이곳에 로그인 로직을 두고 Domain 별 테스트에서는 API만 테스트하려 하는데 이때 beforeEach의 순서를 정해야 하는 일이 발생했습니다. Junit5 상속관계에서 BeforeEach 순서는 어떻게 될까? 아래 코드에서 보면 ApiTest의 setUp이 먼저 실행되는걸 확인할 수 있습니다. public class DomainTest extends ApiTest { @BeforeEach void setUp1() { Sys..

Languege/Java & Spring

스프링부트 어노테이션이란? 커스텀 어노테이션 추가하는 방법

어노테이션이란? 어노테이션은 소스 코드에 메타데이터를 추가하기 위한 것으로, 스프링부트에서는 다양한 용도로 사용됩니다. 1.스프링 빈(Bean) 등록을 위한 어노테이션 - @Component, @Controller, @Service, @Repository 등 - 해당 어노테이션이 붙은 클래스는 스프링 컨테이너에서 빈으로 관리됩니다. 2.의존성 주입(Dependency Injection)을 위한 어노테이션 - @Autowired, @Resource 등 - 해당 어노테이션이 붙은 필드나 생성자 등에 의존성 주입이 자동으로 이루어집니다. 3.스프링 MVC에서 컨트롤러(Controller)를 위한 어노테이션 - @RestController, @RequestMapping, @GetMapping, @PostMapp..

Languege/Java & Spring

[Spring Framework OPEN API서비스 교육] 1.API KEY란?

[API KEY] 특징 - 인증(X) : 식별만 수행한다. - 목적 : 통계와 사용량 제한 - 공용 데이터 조회시에 주로 사용 사이트 단위로 접근 허용 - 사용자별 로그인을 하지 않아도 접근 가능한 페이지에 적용 가능 - 1일 사용량 제한하는 경우가 많음 서명 키 없이 API KEY와 사이트 URL을 이용해 접근 제한이 가능하다. 1.클라이언트 개발자는 Provider에 hostName 및 기타 정보를 이용해 API KEY를 요청한다. 2.Provider는 API KEY를 생성하고 hostName 및 기타 정보를 DB에 저장하고 , API KEY를 발급한다. 3.클라이언트 개발자는 해당 API KEY를 통해 데이터를 요청한다. 4.Provider는 API KEY & Origin을 Validate하고 성공..

Error/개발환경

스프링부트 no main manifest attribute in 에러

ec2에서 스프링부트 백엔드 서버를 올리고 파일을 java -jar로 실행 시켰는데 no main manifest attribute in 에러가 발생하였습니다. !? 이게 뭐지 했었는데 이유는 간단합니다. 두개의 파일 중 -SNAPSHOT.jar 파일을 실행시키면 문제가 발생하지 않습니다.

mntdev
'스프링부트' 태그의 글 목록