본문 바로가기

전체 글

20231128 - 세 번째 팀 프로젝트를 마치며 일주일 동안의 팀 프로젝트가 끝이 났다. 이번 프로젝트는 JWT를 이용한 인증 인가와 CRUD를 중점으로 한 프로젝트였다. 나는 프로젝트에서 인증을 위한 구조를 설계하고 회원가입, 로그인, 로그아웃 기능을 구현했다. 아직 JWT를 다루는 방법이 미숙해서 강의와 블로그를 참고하면서 진행했다. 전체적으로 큰 문제없이 흘러가는듯 했지만 로그아웃을 구현하는데에서 어려움이 있었다. 토큰을 삭제하는 방법은 사용할 수 없어서 Redis라는 처음 보는 DB를 사용하기로 했다. 하지만 왜 Redis를 사용해야 하는지도 몰랐고 어떻게 사용해야 하는지도 감이 잡히지 않았다. 이것 역시 블로그를 참고해서 하려 했으나 저마다 로그인 기능부터 구현한 모습이 다 달라서 쉽게 적용시키기가 어려웠다. 그래서 처음으로 ChatGPT의 .. 더보기
20231127 - redis 사용법 1. redis를 설치해준다 https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redis Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redis github.com 2.build.gradle implementation 'org.springframework.boot:spring-boot-starter-data-redis'.. 더보기
개발일지 25 - Jwt 검증 중 발생한 오류 뉴스피드 프로젝트를 진행하는 중에 Postman으로 http요청을 보내는데 자꾸 에러가 뜨면서 진행이 되지 않았다. 결론적으로 말하자면 굉장히 많은 문제들이 겹쳐있어서 한 가지만 해결해서 될 문제가 아니었다. 일단 로그를 보면서 하나씩 해결해 나가기로 했다. 1.Validation 첫 번째는 내가 정한 Email의 형식을 지키지 않은 형태의 데이터값이 넘어와 데이터 검사에서 걸린 것이다. 이는 다시 형식에 맞춰 보내니 해결되었다. 2. 토큰검증 시 예외발생 요청헤더에 토큰을 담아 보내는데 자꾸 예외가 발생했다. 그래서 토큰 관련 메서드를 보면서 잘못작성한 코드가 있는지 확인해 봤다. // 토큰 생성 메서드 public String createToken(String userId){ Date date = n.. 더보기
개발일지 24 - Validation Validation 이란 예외 발생에 의한 오류를 예방하기 위해 거치는 데이터 검증과정. Spring이 제공하는 Bean Validation을 사용할 수 있다. 사용법 build.gradle 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' 어노테이션 추가 package com.sparta.springauth.dto; import jakarta.validation.constraints.*; import lombok.Getter; @Getter public class ProductRequestDto { @NotBlank//null 불가 private String name; @Email//e-mail 형식 pri.. 더보기
개발일지 23 - @PathVariable, @RequestBody 최근 자주 사용하고 있는 클라이언트의 http요청에서 전달된 데이터를 받아오는 역할을 하는 @PathVariable, @RequestBody 두가지 어노테이션에 대해 알아보았다. @PathVariable // localhost:8080/api/board/1 요청 URI @GetMapping(/api/board/{id}) public String getBoard(@PathVariable Long id){ ... } 위와 같이 요청 URI에 파라미터를 담아 보낸다. @ReqeustBody { "name" : "Yoon", "password" : "1234" } 요청을 보낼 때 Body에 JSON형태의 데이터를 담아보낸다. // localhost:8080/api/board 요청 URI @PostMapping(.. 더보기
개발일지 22 - 현재까지 자주 사용하고 있는 어노테이션 스프링에 대해 배우기 시작하고 프로젝트를 진행하면서 다양한 어노테이션들을 사용하게 되었다. 그래서 현재까지 자주 사용되는 어노테이션들을 정리하고자 한다. @Override 해당 메서드가 재정의된 메서드임을 알리기 위함 @Getter, @Setter 자동으로 get메서드와 set메서드 생성 @Component, @bean, @Controller,@Repository,@Service,@Configuration 등 bean등록을 위한 어노테이션들, 쓰임새와 사용방법이 조금씩 차이가 있다. @RequestMapping 클라이언트로부터 온 요청을 메서드와 매핑하기 위함 @PostMapping, GetMapping, PutMapping, DeleteMapping 등 RequestMapping에 의해 매핑되는 메서드.. 더보기
개발일지 21 - JPA JPA란? JPA( Java Persistence API)는 자바 ORM(Object-Relational Mapping) 대한 표준 명세(인터페이스 모음)이며 객체와 데이터베이스 간의 매핑을 관리하고, 쿼리문의 작성 없이 데이터베이스 작업을 수행할 수 있게 해 준다. 이를 통해 CRUD 작업을 더욱 쉽게 할 수 있도록 지원해 주고, 코드의 변경이나 유지보수도 용이해진다. JPA 연결 spring.datasource.url: jdbc:mysql://localhost:3306/mydatabase spring.datasource.username: root spring.datasource.password: password spring.jpa.database: mysql // 데이터베이스 spring.jpa.da.. 더보기
개발일지 20 - Spring Bean Spring Bean Spring 에서 Bean이란 Spring이 관리하는 객체를 뜻하며 Spring IoC컨테이너에 Bean을 등록해 사용한다. Bean의 등록 방법 Bean으로 등록하고자하는 클래스 위에 @Component 를 설정해준다. @Component public class 클래스 이름 {...} Spring 서버가 뜰 때 @ComponentScan에 설정해 준 packages 위치와 하위 packages들을 확인하여 @Component가 설정된 클래스들을 Bean으로 들록해준다. Bean의 사용 방법 @Autowired를 필드위, 메서드 위에 적어준다. 반드시 Spring IoC 컨테이너에 의해 관리되는 클래스에서만 사용이 가능하다. ApplicationContext를 이용한 Bean을 수동.. 더보기