[Spring] @NotNull vs @Column(nullable = false)
·
Back-end/Spring
본격적인 차이로, @Column(nullable = false)는 JPA가 만든 엔티티의 필드 값이 null로 채워진 상태에서도 정상적으로 수행되다가 데이터베이스 쪽으로 SQL 쿼리가 도착한 순간에 테이블 컬럼의 NOT NULL 옵션에 의해 예외가 발생된다.그러나 @NotNull 어노테이션은 데이터베이스 쪽으로 SQL 쿼리가 보내지기 전에, 정확히는 JPA가 만든 엔티티의 필드 값이 null로 채워지는 순간에 예외가 던져진다. 즉 @NotNull 어노테이션이 보다 더 빠른 단계에서 같은 예외를 검출하므로, 더 안전하다고 볼 수 있겠다. @Valid 어노테이션에 대한 공부를 할 수 있어서 좋았다. 추가1. @NotNull해당 값이 null인지 체크하는 validation 2. @NotBlank오직 문자열에..
[Spring] 무한 redirection
·
Back-end/Spring
문제사항 spring google 소셜 로그인 구현 중 SuccessHandler에 리디렉션 url을 설정하여 로그인이 잘 되는지 테스트하고 있는 도중에, 갑자기 무한 리다이렉트 되는 현상을 발견했다...!OAuth2SuccessHandler핸들러 코드를 살펴보자...@Component@Slf4jpublic class OAuth2SuccessHandler implements AuthenticationSuccessHandler { @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authent..
[AWS] EC2 환경에서 Redis 구축하기
·
Infra & Cloud/AWS
0. redis란?REmote DIctionary Server‘키-값’ 구조의 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 in-momory data structure store 특징○ In-memory data structure문자열, hash, list, set, sorted set, stream 등의 자료형을 지원하는 “data structure server”○ ProgrammabilityLua를 사용한 server-side scripting과 Redis Functions를 이용한  server-side 저장 과정○ Persistence빠른 액세스를 위해 데이터 세트를 메모리에 보관하지만, 재부팅 및 시스템 오류가 발생해도 영구 스토리지에 대한 모든 쓰기를 유지할 수도 있다.○ Clusturi..
[AWS] EC2와 RDS 연결하기
·
Infra & Cloud/AWS
1. DB 생성RDS 탭에 들어가 데이터베이스를 생성해준다.프리티어를 사용할 예정이므로 과금 조건은 과감하게 해제한다!! RDS 확장 지원 활성화에 체크 해제 해야 한다 (과금 사항!!)  마스터 사용자 이름, 마스터 암호는 SpringBoot yml에서 DB Connection 설정과 Local 에서 Test 할때 필요하다.  스토리지 부분의 할당된 스토리지는 프리티어에서는 20 GB 가 제공된다.스토리지 자동 조정 기능은 과금 사항이므로 체크 해제해야 한다!!! - 퍼블릭 엑세스 : '예' 선택 시 VPC 외부에서도 해당 RDS에 접근이 가능, 같은 VPC의 EC2에서만 접근할 경우 '아니오' 선택* 만약 아니요를 선택한다면 퍼블릭IP가 할당되지않아, 외부에서 접근이 불가능하다. - 보안그룹은 EC2..
[Spring] Security + JWT + Redis를 활용한 로그인 구현 (1)
·
Back-end/Spring
Security를 활용한 로그인 구현을 위해 여러 블로그들을 참고하여 작성한 글입니다.내용에 잘못된 점이 있다면 지적해주시면 감사하겠습니다! 먼저 로그인 구현에 앞서 JWT가 뭔지 개념을 정리해보도록 하자. JWT란?JWT는 JSON Web Token의 약자로, Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다.언제?권한 부여 : JWT를 사용하는 가장 일반적인 방식. 사용자가 로그인하면 각 후속 요청에 JWT가 포함되어 사용자가 해당 토큰으로 서비스 및 리소스에 접근할 수 있다.정보 교환 : 공개/개인 키 쌍을 사용해 JWT에 서명이 가능하기 때문에 발신자가 누구인지 식별 가능하다. 또한 헤더와 페이로드를 사용하여 서명을 계산하므로 콘텐츠 변조여부를 식별할 ..
[Spring] WebClient를 통한 공공데이터 Open API 호출
·
Back-end/Spring
공공데이터 Open API를 사용하는 서비스의 흐름을 알기 위해 공부를 하면서 알게 된 내용들을 기록하는 글입니다. 오류나 고쳐야 할 사항들이 있다면 피드백 부탁드리겠습니다!WebFlux 라이브러리를 사용한 이유Spring에서 외부 API를 사용할 수 있는 종류는 다음과 같다.HttpURLConnectionRestTemplateWebClientHttpURIConnection은 URLBuilder를 사용하여 코드를 작성한 것으로, 생각보다 코드가 길고 장황하다.RestTemplate은 Spring에서 지원하는 객체로, 동기식으로 Rest 방식 API를 호출할 수 있는 Spring 내장 클래스이다.동기적으로 동작하기 때문에 요청/응답 동안 스레드가 차단되는 문제점이 있을 뿐더러, Spring boot 5...
[Nest.js] 3. Testing
·
Back-end/Nest.js
[Nest.js] 2. Nest.js로 REST API 만들기이전 글을 읽고 Nest.js 설정을 하는 게 좋음. [Nest.js] 1. Nest.js 프로젝트 구조 파악하기노마드 코더님의 nest.js 기초 강의를 토대로 필기한 것입니다.nest.js란node.js의 웹 프레임워크로, express위에서sksmsfbrjs51.tistory.comIntroduction of Testing in Nestpackage.json 파일에는 테스팅과 관련된 스크립트가 5개가 있다. 테스트 시에는 jest 사용 (js를 쉽게 테스팅하는 npm 패키지)testtest:watchnpm run test:watch (모든 테스트파일을 관찰해서 무슨 일이 일어나는 지 관찰)test:covcoverage modetest:de..
[Nest.js] 2. Nest.js로 REST API 만들기
·
Back-end/Nest.js
이전 글을 읽고 Nest.js 설정을 하는 게 좋음. [Nest.js] 1. Nest.js 프로젝트 구조 파악하기노마드 코더님의 nest.js 기초 강의를 토대로 필기한 것입니다.nest.js란node.js의 웹 프레임워크로, express위에서 작동하는 프레임워크이다. express와 fastify 두 가지가 전부 호환되므로 매우 실용적인sksmsfbrjs51.tistory.com Nest.js로 영화 REST API를 만들어보자Movies controller우리는 @nestjs/cli 를 설치했기 때문에 커맨드 라인으로 모든 것을 생성할 수 있다. 여기서 새로운 컨트롤러를 생성해보자nest generate(g) co 이후 사용하고자 하는 controller 이름을 생성하면 다음과 같이 폴더가 생성된다..