본문 바로가기

전체 글355

JUnit 테스트에 Spring Security 적용하기 이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 읽으며 정리한 글입니다. JPA 구성과 스프링 시큐리티를 적용한 후 이전에 작성했던 테스트들을 돌려 보면 아래와 같이 통과되지 않는다. @WebMvcTest의 특성을 정리하고 인증된 사용자를 추가하는 방법을 알아보자! 🎆 @EnableJpaAuditing은 엔티티를 필요로 한다 Error creating bean with name 'jpaAuditingHandler' JPA metamodel must not be empty! Failed to load ApplicationContext java.lang.IllegalStateException: Failed to load ApplicationContext ... Caused by: .. 2023. 2. 22.
스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (feat. Google, Naver) 이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 읽으며 정리한 글입니다. 구글 API 콘솔에서의 OAuth 2 설정 프로젝트 만들기 → 사용 설정된 API 및 서비스 OAuth 동의 화면 (User Type: 외부) 사용자 인증 정보 생성 → OAuth 클라이언트 ID 발급받은 클라이언트 ID와 보안 비밀번호(Secret)는 안전하게 보관한다. 네이버 API 콘솔에서의 OAuth 2 설정 네이버에서는 스프링 시큐리티를 지원하지 않기 때문에 Common-OAuth2Provider에서 기본으로 설정해 주던 값을 수정으로 입력해 주는 과정이 필요하다. 🔮 의존성 추가 스프링 부트 2.0부터 oauth2-client 라이브러리를 추가하면 CommonOAuth2Provider라는 enu.. 2023. 2. 17.
머스테치(Mustache)로 화면 구성하기 이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 읽으며 정리한 글입니다. 🍊 템플릿 엔진 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어이다. 서버 템플릿 엔진: 서버에서 구동된다. 서버에서 Java 코드로 문자열을 만든 뒤, 문자열을 HTML로 변환하여 브라우저로 전달한다. JSP, Freemarker 등 클라이언트 템플릿 엔진: SPA(Single Page Application)는 브라우저에서 화면을 생성한다. 서버에서 이미 코드가 벗어난다. React, Vue 등 🍊 머스테치 수많은 언어를 지원하는 가장 심플한 템플릿 엔진이다. JSP와 같이 HTML을 만들어 준다. 자바에서는 서버 템플릿 엔진으로, 자바스크립트에서는 클라이언트 템플릿 엔진으로 모.. 2023. 2. 10.
[Spring Boot] JPA로 데이터베이스 다루기 이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 읽으며 정리한 글입니다. JPA는 인터페이스로서 자바 표준 명세서이다. 인터페이스 JPA를 사용하려면 Hibernate, EclipseLink 등의 구현체가 필요하다. Spring에서 JPA를 사용할 때에는 이 구현체를 직접 다루지 않고, 구현체를 쉽게 사용하고자 추상화시킨 Spring Data JPA 모듈을 이용한다. JPA ← Hibernate ← Spring Data JPA 🍊 Entity // domain/posts @Getter @NoArgsConstructor @Entity public class Posts extends BaseTimeEntity { @Id @GeneratedValue(strategy = Generat.. 2023. 2. 9.
[Spring Boot] 테스트 코드 작성하기 이 글은 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 읽으며 정리한 글입니다. TDD란, 테스트가 주도하는 개발을 말한다. 테스트 코드를 먼저 작성하는 것부터 시작한다. 반면 단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 말한다. 단위 테스트는 개발 단계 초기에 문제를 발견하도록 돕고, 나중에 코드를 리팩토링 하는 등 코드 변경이 있을 때 기존 기능이 올바르게 작동하는지 쉽게 확인이 가능해서 안전하다. 또한 Postman 같은 API 테스트 도구로 하나하나 테스트 하는 번거로움을 줄일 수 있어서 효율적이다. @SpringBootApplication public class Application { public static void main(String.. 2023. 2. 8.
[JPA] 값 타입 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. 기본값 타입 임베디드 타입(복합 값 타입) 값 타입과 불변 객체 값 타입의 비교 값 타입 컬렉션 JPA에서는 데이터 타입을 엔티티 타입과 값 타입으로 분류할 수 있다.엔티티 타입이란 @Entity로 정의하는 객체를 말한다. 데이터가 변해도(예: 회원의 나이) 식별자로 추적 가능하다. 값 타입은 int, Integer, String처럼 단순히 값으로 사용하는 자바의 기본 타입이나 객체를 말한다. 식별자가 없고 값 자체이므로 변경하면 추적이 불가능하다. 값 타임은 기본값 타입, 임베디드 타입, 컬렉션 값 타입으로 나눌 수 있다. 기본값 타입 생명 주기를 엔티티에 의존한다. 회원을 삭제하면 이름과 나이 필드가.. 2023. 1. 25.