이번에는 member를 조회하고 삭제하는 기능을 추가해 보겠습니다. MemberDto 생성 먼저 Member 데이터 전송을 위한 MemberDto 객체를 생성합니다. @Data //자동으로 필드에 대한 getter, setter, equals(), hashCode(), toString() 메서드 등을 생성 @AllArgsConstructor @NoArgsConstructor public class MemberDto { public Long id; private String email; private String username; private String nickname; public static MemberDto toDto(Member member){ return new MemberDto(member...
이번 글에서는 잠시 쉬어가는 시간으로 Exception처리를 해보려고 합니다. 기존에 예외처리는 모두 RuntimeException으로 처리를 해서 오류가 났을때 어디서 났는지 확인하기가 어려웠는데요, 이번에 각 기능별로 Exception처리를 달리하여 오류가 발생했을 때 어디서 발생했는지 확인하기 쉽게 만들어보겠습니다. Exception 클래스 생성 각 기능에 대해서 Exceptino 클래스를 생성하겠습니다. 현재까지 구현된 기능중에서 발생할 만한 Exception들은 다음과 같습니다. LoginFailureException.java public class LoginFailureException extends RuntimeException { } MemberEmailAlreadyExistsExcepti..
Java 8부터 도입된 Stream API는 Java 컬렉션에서 데이터를 처리하고 조작하는 데 사용되는 함수형 인터페이스를 제공합니다. Stream API는 일반적으로 데이터를 처리하거나 필터링하는 데 사용되며, 컬렉션과 배열의 요소를 하나씩 처리합니다. 이러한 요소는 함수형 프로그래밍 패러다임에서 사용되는 함수 인터페이스로 변환됩니다. Stream API의 이점 코드 간결성 성능 향상 병렬 처리 가능 Stream API 사용법 1. Stream 생성 1-1. Collection으로부터 Stream 생성 Collection 인터페이스의 stream() 메서드를 사용하여 Stream을 생성할 수 있습니다. List numbers = Arrays.asList(1, 2, 3, 4, 5); Stream numb..
이번 시간에는 저번 시간에 구현한 JWT 관련 기능을 사용하는 TokenService와 이를 활용한 SignService를 만들어 보겠습니다. TokenService application.yml 설정 먼저 TokenService에서 사용할 설정 값들을 application.yml에 추가하겠습니다. spring: ... profiles: active: local include: secret 이렇게 설정하면 profile이 local로 활성화가 되고, secret을 include하여 application-sercret.yml 파일에 있는 값을 읽을 수 있습니다. application-secret.yml 파일에는 다음과 같이 작성합니다. jwt: key: access: tmpAccessKey refresh: ..
Mockito는 유닛 테스트에서 모의 객체를 생성할 수 있게 해줍니다. 이를 통해서 의존성 및 동작의 모의 객체를 생성하여 컴포넌트의 기능을 독립적으로 테스트 할 수 있습니다. 그리고 MockitoExtension은 spring Framework와 통합되는 Mockito의 확장 프레임워크입니다. 이번 글에서는 MockitoExtension에 대한 정리와 간단한 사용법등을 알아보겠습니다. MockitoExtension이란? MockitoExtension은 Spring Framework와 통합되는 Mockito 프레임워크의 확장 프레임워크입니다. @Mock 어노테이션을 사용하여 Spring이 관리하는 컴포넌트에 모의 객체(mock objects)를 자동으로 주입할 수 있습니다. 이는 개발자가 유닛 테스트에서..
이번에는 비밀번호를 그대로 사용할 수 없기 때문에 암호화를 해보고, 로그인을 위한 토큰을 발급받고 검증까지 진행해보겠습니다. 비밀번호 암호화 비밀번호 암호화는 Spring Security에서 제공하는 PasswordEncoder를 사용하겠습니다. PasswordEncoder는 암호화된 비밀번호를 생성하거나 저장된 비밀번호화 사용자가 입력한 비밀번호를 비교하는 기능이 있습니다. 바로 코드로 보겠습니다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) t..
이번에는 Entity를 생성하고 변경하는 시간을 추가해보고, 이전 게시글에서 만들었던 Member와 Role에 대해서 Repository를 생성해보겠습니다. EntityDate추가 먼저 생성 시간과 업데이트 시간을 담고있는 EntityDate 클래스를 생성해줍니다. @EntityListeners(AuditingEntityListener.class) @MappedSuperclass @Getter public abstract class EntityDate { @CreatedDate @Column(nullable = false, updatable = false) private LocalDateTime createdAt; @LastModifiedDate @Column(nullable = false, updata..
프로젝트를 생성했으니 이번에는 로그인 기능을 구현해보겠습니다. 로그인 기능은 Json Web Token을 이용한 토큰 인증 방식을 사용하는데, 이 부분은 아직 공부중이라 학습한 내용을 같이 정리해가면서 구현을 해보겠습니다. 프로젝트 계층 구조 요구 사항 회원 가입을 할 때 필요한 정보는 다음과 같다. email : 중복 x, password : encoding 할 것 username nickname : 중복 x, 변경 가능 role : 여러 개의 권한 가질 수 있음 생성할 클래스는 Member.java Role.java MemberRole.java RoleType.java Member와 Role은 각각 MemberRole 1대N 관계를 가진다. 구현 Member.java @Entity @Getter @N..
먼저 프로젝트 생성부터 해보겠습니다. 1.https://start.spring.io/ 접속 start.spring.io에 접속하면 스프링 부트 제작을 위한 설정을 쉽게 할 수 있습니다. Dependencies를 좀 살펴 보자면 Spring Web : 웹 개발 라이브러리, RESTful 웹 서비스를 구축하고, HTTP 요청 및 응답 처리, 데이터 바인딩, 예외 처리 등을 지원 Spring Data JPA : JPA(Java Persistence API)를 기반으로 하는 데이터 액세스 계층을 구축할 수 있는 라이브러리 Lombok : 자바 언어의 보일러플레이트 코드를 줄이기 위한 라이브러리로, Getter, Setter, EqualsAndHashCode, ToString 등의 메소드를 애노테이션으로 대체할 ..