[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..
[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 이름을 생성하면 다음과 같이 폴더가 생성된다..
[Nest.js] 1. Nest.js 프로젝트 구조 파악하기
·
Back-end/Nest.js
노마드 코더님의 nest.js 기초 강의를 토대로 필기한 것입니다.nest.js란node.js의 웹 프레임워크로, express위에서 작동하는 프레임워크이다. express와 fastify 두 가지가 전부 호환되므로 매우 실용적인 프레임워크라고도 할 수 있다. 프로젝트 구조nestjs는 Spring과 유사하게 비즈니스 로직을 담당하는 service와 엔드포인트에 매핑되는 controller가 분리 되어있다.src 안에는 main, app.controller, app.service, app.module이 존재한다.main.tsimport { NestFactory } from '@nestjs/core';import { AppModule } from './app.module';async function boo..
[Spring] H2 DataBase 사용법
·
Back-end/Spring
1. H2 DataBase란?H2 데이터베이스는 설치가 필요 없고 용량이 가벼우며 개발용 로컬 DB로 사용하기 좋은 DBMS이다.자바 기반의 오픈소스 관계형 데이터베이스 관리 시스템(DBMS).서버(Server) 모드와 임베디드(Embedded) 모드의 인메모리 DB 기능을 지원.브라우저 기반의 콘솔 모드를 이용할 수 있음.별도 설치과정이 없고 2.5MB 이하의 저용량 DB.표준 SQL의 대부분을 지원로컬 및 테스트 환경에서 많이 사용됨.2. 설치 후 사용법1. http://h2database.com/html/main.html 에서 다운로드.2. C:\Program Files(x86)\H2\bin 위치에서 h2 window 파일 실행하기. H2 DBH2 DB에는 3가지 모드가 있다.- Server Mod..