목록Spring (9)
우당탕탕 개발일지
스케줄링이란 일정한 시간 간격으로 반복적인 작업을 수행하는 도구이다. 스프링 부트 애플리케이션에서는 주기적인 작업을 스케줄링하기 위한 어노테이션 기반의 방법을 제공한다. @Scheduled 어노테이션을 사용하면 일정한 시간 혹은 특정 시간에 코드가 실행되도록 설정할 수 있다. 스케줄러 속성fixedDelay: 메서드의 실행이 끝난 시간을 기준으로, 설정된 밀리세컨드 간격마다 실행fixedRate: 메서드의 실행이 시작하는 시간을 기준으로, 설정된 밀리세컨드 간격마다 실행initialDelay: 설정된 밀리세컨드 시간 후부터 fixedDelay 간격마다 실행cron: Cron 표현식을 사용하여 설정한 시간에 실행* fixedDelay의 경우 해당 작업이 끝난 시점부터 시간을 측정하고, fixedRate의 ..
최근 개발 중인 프로젝트에서 Postman을 통해 API를 호출하여 테스트를 진행했지만, 유저 데이터를 수작업으로 입력하다 보니 입력 실수나 불완전한 데이터로 인해 테스트 결과가 일관되지 않거나 예상과 다르게 나오는 경우가 발생하였다. 위와 같은 문제를 해결하기 위해 테스트 코드를 도입하게 되었다. 단위 테스트(Unit Test)란, 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다. 여기서 모듈은 하나의 기능 또는 메서드이다. 단위 테스트는 해당 부분만 독립적으로 테스트하기 때문에 문제점을 빠르게 확인할 수 있다. 이러한 이유로 최근에는 TTD (Test-Driven-Development) 라는 테스트 주도 개발이 많이 사용되고 있다. 일반적으로 개발 흐름이 코드를 작성한 후 테..
Redis는 데이터를 주로 메모리에 저장하기에 매우 빠른 데이터 액세스 속도를 제공한다. RefreshToken의 경우, 자주 액세스 되는 데이터이기 때문에 데이터를 캐시로 사용하는 데 매우 효과적이었다. 가장 큰 장점은 Time to Live (TTL) 설정을 통하여 만료 시간을 설정하는 기능을 가지고 있다. Redis 사용 순서는 다음과 같았다. 1. 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-data-redis' 2. application.yml 작성spring: data: redis: host: localhost port: 6379 password: ${REDIS_PASSWORD} # ..
스프링에서 API 응답 방식으로 보통 ResponseEntity 방식을 사용한다. ResponseEntity는 응답의 상태 코드와 데이터를 포함하지만, 각 API마다 응답 형식이 달라진다. API 공통 응답 구조는 API 개발 및 유지보수의 효율성을 높이며 클라이언트에게도 일관성 있는 응답을 전송하는 것은 중요하다. API 공통 응답 패키지 구조는 다음과 같다. common ├─constants ├─ ErrorCode └─ SuccessCode ├─dto ├─ ApiErrorResponse └─ ApiSuccessResponse ├─exceptions ├─ GeneralException └─ GlobalExceptionHa..
Swagger는 Spring-Fox, Spring-Doc 2가지 라이브러리가 존재한다.Spring-Fox는 오래전에 나온 라이브러리이기 때문에, Spring-Doc를 사용할 예정이다. 1. 의존성 추가dependencies { . . . //Security implementation 'org.springframework.boot:spring-boot-starter-security' testImplementation 'org.springframework.security:spring-security-test' // swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4' } 2. SwaggerConfig..
프로젝트를 진행하면서 가상 API 서버가 필요하여 해당 서버에 JWT 서비스를 적용하게 되었다. GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and AndroidJava JWT: JSON Web Token for Java and Android. Contribute to jwtk/jjwt development by creating an account on GitHub.github.com dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web..
선행조건1. build.gradle에 필요한 의존성 추가dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' //MySQL runtimeOnly 'com.mysql:mysql-connector-j' //JWT im..
1단계. 로그인 환경 구성유저 아이디로 로그인을 구현할 것이기 때문에 사용자 이름을 선택해 주었다. 2단계. 보안 요구 사항 구성MFA 방법으로 SMS메시지 혹은 인증 앱을 이용하는 방법이 있는데, SMS 메시지 방식은 Amazon SMS에서 비용이 별도 부과되어 사용하지 않기로 결정했다. 3단계. 가입 환경 구성cognito는 인증/인가 기능만 대체해주고, 실제 사용자 정보는 cognito_id로 다른 DB에 저장할 예정이기 때문에 default 값으로 설정한다. 4단계. 메시지 전송 구성 5단계. 앱 통합백엔드 서버에서 인증을 처리하기 때문에 기밀 클라이언트를 설정해주었고, access-token은 1시간, refresh-token은 1일로 설정해주었다. 클라이언트 보안키 표시를 활성화한 후, 클라이..