목록분류 전체보기 (170)
쌩로그
목록 포스팅 개요 본론 2-1. 문제 발생 2-2. 문제 해결 방향 2-3. 문제 해결 요약 1. 포스팅 개요 PostDto로 LocalDate를 받을 때 다음과 같은 코드로 (비슷하게) 작성되어있다. @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate localDate;Spring Rest Docs를 이용해서 API문서를 작성하려고 하는데, Gson 라이브러리의 Gson객체로 toJson()메서드를 이용해서 자바코드로 생성된 클래스를 JSON으로 파싱했다. JSON으로 변환한 데이터는 API 문서에 정보를 넣어줄 때 다음과 같이 content에 넣는다. 이 때 PostDto를 생성할 때 LocalDate 값을 넣어주는데, 그냥 생성자 혹은 빌더패턴을 사용하더..
목록 포스팅 개요 본론 요약 1. 포스팅 개요 프로젝트 중간에 너무 몰두한 나머지 판단력이 흐려져 날짜 타입을 선언할 때, SQL의 타입이 Date라서 자바 코드에 날짜 관련 타입에 Date를 썻다.;;; 핑계가 참 지랄맞다...;;;; ㅋㅋㅋㅋㅋㅋㅋㅋ 핑계인가... 바보인가.. 글 쓰면서도 내가 나한테 어이가 없어서 웃음이 나온다...ㅋㅋㅋ 그냥 날짜라면 LocalDate를, 시간이라면 LocalTime을 혹은 둘 다 써야한다면, LocalDateTime을 사용하자. 그럼 왜 나는 이런 생각을 하게 되었는가.... 본론에서 풀어보겠다. 2. 본론 먼저 자바의 java.util 패키지에는 Date, Calender가 있다. 이게 너무 문제가 많아서 java 8부터 java.time 패키지를 통해서 Loc..
목록 포스팅 개요 본론 요약 1. 포스팅 개요 제 곧 내이다. Rest Docs를 이용하다가 given.willReturn을 사용하는데, void일 때 어떻게 해야되는지 찾아보았고, 이를 간단하게 기록하고, 기억하려고 포스팅을 하게되었다. 2. 본론 정말 간단하다. willDoNothing() 혹은, doNothing()을 사용하면된다. doNothing()이 Mockito 라이브러리를 이용한 방식이고, willDoNothing()은 Mockito를 확장한 BDDMockito 라이브러리를 이용한 방식이다. doNothing()은 조금은 레거시적인 방법이다. // willDoNothing().given(tokenService).verificationLogOutToken(Mockito.any(HttpServ..
목록 포스팅 개요 본론 2-1. 구성 클래스 2-2. 문제 살펴보기 2-3. 문제 해결하기 2-3-1. 번외 @Getter 사용해보기 2-3-2. @Setter로 진짜 문제 해결하기 요약 1. 포스팅 개요 이번 프로젝트에서 동행 도메인 같은 경우, 쿼리스트링으로, 지역과 날짜(동행시작 날짜)를 검색해서 조회하는 기능을 구현했는데, 쿼리스트링으로 검색 조건을 넣더라도, 검색조건을 가지는 클래스(AccompanySearchCondition)의 필드와 바인딩 되지 않던 문제를 해결하는 포스팅이다. 결론부터 말하자면 @Setter를 쓰면 된다. 2. 본론 2-1. 구성 클래스 먼저 관련된 클래스 코드를 보면 다음과 같다. Controller // 동행 전체 조회(날짜, 지역) @GetMapping public ..
목록 포스팅 개요 본론 2-1. 일단 결론 2-2. 애플리케이션 로직 2-3. 문제 발생 2-4. 문제 해결 방향 2-5. 문제 해결 요약 1. 포스팅 개요 Entity 클래스에 @Builder 애너테이션을 클래스 레벨에 두었었는데, 클래스에 new ArrayList();를 다음과 같이 선언했음에도 불구하고, NullPointerException(이하 NPE)이 발생했다. 이를 해결한 포스팅이다. @OneToMany(cascade = CascadeType.ALL, mappedBy = "accompany", orphanRemoval = true) List 땡땡List = new ArrayList();예전에 봤던 글에서 @Builder를 주의해서 쓰자고 봤는데,,, 흠.. 이번에 마주쳤다. 2. 본론 2-1..
목차 포스팅 개요 본론 2-1. 문제가 무엇인가? 2-2. 문제 해결 2-3. 해결 결과 요약 1. 포스팅 개요 AOP로 AccessToken 검증(빡쳐서 만듬)이라는 제목으로 포스팅을 했다. AccessToken을 검증하는데 코드상으론 400대 에러를 던지도록 해야하는데, 왠지 모르게 500번대 에러를 던졌다. 이걸 AOP로 해결했었는데, 물론 구현한 부분에서는 나름 괜찮았다고 생각하지만, 사실 AOP를 사용할 필요가 없었고, 또 한 분은 감사하게도 댓글로 알려주시길.. 라고 남겨주셨다. 말씀하신 것처럼 AOP의 목적에 맞게 쓰이지 않았다. 이를 수정하고, 무엇이 문제였는지에 대한 포스팅이다. 2. 본론 2-1. 문제가 무엇인가? 먼저 당시 왜 500번대 에러가 발생했는지를 살펴보자. 먼저 Securi..
목록 포스팅 개요 본론 2-1. Redis 설치 2-2. Redis 설정 권한 주기 2-3. Redis 설정 2-4. 윈도우 시스템의 서비스를 활용하여, Redis-cli 실행 2-5. 윈도우 시스템의 서비스를 이용하지 않는 경우 요약 1. 포스팅 개요 또 과정 포스팅이다..;;ㅋㅋ 그래도 나중에 나를 위해.. 윈도우즈에 Redis를 설치하고, 실행하여 접속해보고자 해당 포스팅을 하게 되었다. 명령어는 다른 블로그들이 참, 잘 정리해놨다.. ✅ 참고! 스프링부트와 연계되는 부분은 없다. 단순히 windows로 Redis를 이용하기 위한 방법이다. "나는 왜 Redis를 사용하게 되었는가?" 부터 얘기해보고자 한다. JWT 토큰 관리를 위해서 자료들을 찾아보다가, 부캠 메인 프로젝트 팀원이 JWT 토큰 관..
목록 포스팅 개요 본론 요약 1. 포스팅 개요 AccessToken을 검증하는데 코드상으론 400대 에러를 던지게 해놨지만, Spring Security 설정 때문인지 내부적으로 500대 에러를 내보낸다. 그래서 살짝 빡쳤다... 계속 살펴보고 살펴보다가 생각해낸 것이 AOP였고, AOP를 이용해서 AccessToken에 대한 검증을 하게 되었다. 지금은 잘 나온다. 토큰 만료시("Token is expired") 토큰 일부러 이상하게 준 뒤 결과("Token is INVALID") 2. 본론 2-1. 발생한 문제 현재 JWT 관리를 어떻게 해야할지 고민 중이다. Redis를 이용해서 AccessToken이 만료될 때 어떻게 해야할지, 로그아웃 처리는 어떻게 해야할지 고민중이었다. 고민을 해결해나가기 위..
목차 포스팅 개요 본론 요약 및 결심 1. 포스팅 개요 class Board { private Long id; private String title; private String content; private LocalDateTime createdAt; private LocalDateTime modifiedAt; }대략 이런 게시판 역할을 하는 Entity가 있다고 가정해보자. (애너테이션 생략) 게시판 단일 조회시, 이 Entity의 필드들을 응답용 데이터 전송 객체(이하 ResponseDto)에 그대로 담아서 줄 수 있을 것이다. class BoardDto { public static OnethignResponseDto { private Long id; private String title; priva..
목차 포스팅 개요 본론 2-1. NginX 설치 2-2. 로드밸런스 적용 2-3. SSL 적용 요약 살짝 푸념. 1. 포스팅 개요 HTTP 프로토콜로 통신하는 배포서버에 NginX를 이용하여 SSL인증서를 발급받아 서버가 HTTPS 프로토콜로 통신되도록 해보려고 한다. 2. 본론 2-1. NginX 설치 일단 배포 서버에 NginX를 설치해줘야 한다. $ sudo apt-get install nginx -y # EC2에 NginX 설치NginX를 설치한 후, 서버URL을 들어가면 다음과 같이 나온다. 그러면 NginX가 잘 설치 된 것이다. 참고로 NginX는 80포트를 기본으로 사용한다. 만약 80포트로 다른 무언가가 적용되어 있다면, 아래 화면이 나오지 않을 수도 있다. 2-2. 로드밸런스 적용 현재..