[Spring] Spring만의 유효성 검사 @Valid, @Validated 정리
·
Back-end/Spring
실행 환경build.gradleimplementation 'org.springframework.boot:spring-boot-starter-validation:3.2.2'  1. @ValidValid 어노테이션은 주로 request body를 검증하는데 많이 사용된다.다음 UserDto를 보자public class UserDto { @Email private String email; @NotBlank private String password; @Valid // @NotNull 대신 @Valid를 사용해야함 private Address address; // 생성자 및 getter 함수}public class Address { @NotBlank priv..
[Express.js] Passport 모듈을 활용한 카카오 소셜 로그인 구현
·
Back-end/Node.js
Passport란?Passport는 이름 그대로 서비스를 사용할 수 있게끔 해주는 여권 같은 역할을 하는 모듈이다.회원가입과 로그인은 직접 구현할 수도 있지만, 세션과 쿠키 처리 등 복잡한 작업이 많으므로 검증된 모듈을 사용하는 것이 좋다.그런 방면에서, Passport는 사용하기 좋은 검증된 모듈이다. 특히 facebook이나 kakao, google 같은 소셜 로그인 시에  passport 모듈이 사용된다. 1. Kakao Developers에서 애플리케이션 생성카카오 디벨로퍼에서 내 애플리케이션 -> 추가하기를 눌러 앱을 생성한다 이렇게 애플리케이션을 생성하면 앱 설정 -> 앱 키에서 REST API 키를 확인할 수 있는데, 추후에 kakao Strategy에 사용될 API KEY이므로 env 파..
[Spring] createdAt, updatedAt 사용하기
·
Back-end/Spring
Entity 설계 시 해당 데이터가 생성된 시점, 마지막으로 수정한 시점 등을 속성값으로 사용하고 싶을 때가 있다. 이 때 사용하는 것이 createdAt, LastModifiedAt 속성이다. 1. SpringApplication 설정@SpringBootApplication@EnableJpaAuditing // 추가public class DlinkApplication { public static void main(String[] args) { SpringApplication.run(DlinkApplication.class, args); }} 보통 Springboot 를 실행시키는 클래스 상단에 많이 사용한다.JPA Auditing(감시, 감사) 기능을 활성화하기 위한 어노테이션으로 createdDat..
[Spring] Spring Security + OAuth2 + JWT [카카오 소셜 로그인 구현]
·
Back-end/Spring
build.gradle 설정implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'implementation 'org.springframework.boot:spring-boot-starter-security'implementation 'com.auth0:java-jwt:4.4.0' spring security 사용과 oauth2 라이브러리, 그리고 jwt 토큰 사용을 위해 auth0 jwt 라이브러리를 사용하였다.Spring Security 설정우선 spring security configuration 설정에 대한 전체 코드를 작성하고 설명하고자 한다.@Configuration@EnableWebSecurity@RequiredA..
[Spring] JPA Hibernate의 ddl-auto 속성 분석하기
·
Back-end/Spring
JPA의 구현체 중 하나인 하이버네이트는 다양한 기능을 제공하는데 그 중 엔티티를 등록하면 DDL(Data Definition Language)을 자동으로 작성하여 테이블을 생성하거나 수정해주는 ddl-auto라는 설정이 있다. 사용법- application.yml jpa: hibernate: ddl-auto: # create, none, validate, update, create-drop ddl-auto 속성ddl-auto에 올 수 있는 속성은 다음과 같다. 1. create2. create-drop3. update4. validate5. none createcreate는 단어 그대로 엔티티로 등록된 클래스와 매핑되는 테이블을 자동으로 생성(create)해준다. 이 과정에서 기존에 해..
[Spring] WebClient를 사용한 외부 API 통신
·
Back-end/Spring
사이드 프로젝트를 진행하며 모델 서버와의 연동이 필요했는데, Spring Boot의 WebClient 라이브러리를 사용하여 해결했었다. 제대로 공부해야 할 것 같아서 기록한다. WebClient란?Spring에서 외부 API 서버와의 통신하는 방법으로는 RestTemplate과 WebClient 두 가지 방법이 있다. 그 중 WebClient에 대해 파헤쳐보자 WebClient는 RestTemplate를 대체하는 HTTP 클라이언트이다.기존의 동기 API를 제공할 뿐만 아니라, 논블로킹 및 비동기 접근 방식을 지원해서 효율적인 통신이 가능하다! WebClient는 요청을 나타내고 전송하게 해주는 빌더 방식의 인터페이스를 사용하며, 외부 API로 요청을 할 때 리액티브 타입의 전송과 수신을 한다. (Mon..
[Spring] Swagger 사용 및 JWT과 https 적용해보기
·
Back-end/Spring
1. Swagger란?Swagger는 개발한 Rest API를 문서화 한다.문서화된 내용을 통해 관리 & API 호출을 통한 테스트를 가능하게 해준다. 2. swagger 적용하기build.gradleimplementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' springfox 말고 현재 꾸준히 업데이트가 진행 중인 springdocs 버전을 사용하여 swagger를 구현하였다.springDoc 공식 문서에 따르면, Spring Boot v3 (Java 17 & Jakarta EE 9)을 사용하기 위해선 위 dependency를 사용해야 한다. Spring Boot 3 지원을 위해 springdoc-openapi v2를 사용해야 하기 ..
[Spring] data.sql을 사용하여 서버 실행 시 데이터 삽입하기
·
Back-end/Spring
흔히 서버를 실행할 때 DB에 더미 데이터가 있으면 좋겠다는 생각을 하곤 한다. 매번 컨트롤러에서 직접적으로 넣어주는 방식으로 테스트를 진행했었지만, 더 좋은 방법이 있었다. jpa의 ddl-auto: create 옵션 설정으로 entity 생성하고 추가적인 ddl 스크립트를 만들어서 서버가 시작함과 동시에 데이터를 삽입하는 것! data.sql을 통해서 dml 작업을 진행해보도록 하겠다!  1. application.yml 수정먼저 data.sql을 사용하기 위해선 반드시 jpa.ddl-auto 속성값으로 create 또는 create-drop 으로 선언해야 한다! spring: jpa: database: mysql hibernate: ddl-auto: create # cre..