반응형
목록
java (139)
[꼼꼼한 개발자] 꼼코더

👀 소개스택 트레이스가 무엇이고 어떻게 읽어야 하는지 간단하게 알아보자! 1️⃣ 스택(Stack)이란?자료구조의 한 종류'마지막에 들어온 것이 가장 먼저 나간다'라는 LIFO (Last In, First Out) 구조접시를 쌓아두는 것과 비슷하다. 위에 올린 접시부터 꺼내게 되는.중요한 건 자바 프로그램 실행에서도 이 개념이 그대로 쓰인다. 흐름 간단 설명메서드가 호출될 때마다 호출 정보(변수, 매개변수, 실행 위치 등)가 '호출 스택(Call Stack)'에 쌓임.메서드 실행이 끝나면 해당 스택 프레임이 제거된다2️⃣ 스택 트레이스(Stack Trace)란?프로그램 실행 중 예외(Exception)가 발생 시 그 시점까지의 호출 스택(Call Stack)에 쌓인 메서드 호출 기록을 출력한 것.쉽게 ..

🧑🏻💻 accessId 넘겨주고 받아서 저장하기 컨트롤러에서 'HttpServletRequest request'를 매개변수 객체로 선언하여 서비스에 전달 @GetMapping("/{nickname}") public ModelAndView getUserByNickname(@PathVariable("nickname") String nickname, HttpServletRequest request, Model model) { FifaUser nickNameUser = fifaUserServiceImpl.findUserByNickname(nickname); // 닉네임으로 유저 정보 가져오기 String accessId = nickNameUser.getAccessId(); // 가져온 유저정보에서 access..
🙆🏻♂️ 많아진 기능 이전 기능들을 보면 알겠지만 대부분의 Open API 기능들이 '유저 고유 식별자(accessId)'를 필수적으로 요구하고 있다. 나는 이전에 개발 시 "우선 한 화면에 모든 메서드 기능을 출력하고 나중에 나눠야지!"라는 생각을 가지고 'accessId'를 한 메서드 안에서 계속 저장하여 돌려쓰는 방법을 선택했었다. 그렇게 계속 개발하던 도중 "매번 페이지 넘어갈때마다 닉네임 호출 -> '고유 식별자 획득' 작업을 반복할 수 없는데.." 그렇게 수정이 필요하다는 걸 직감했다.. 🤷🏻 어떻게 수정할까? 찾아보니 리액트에서는 UseState를 사용하지만 백엔드에서는 상태 저장을 3가지 중(세션, 쿠키, 토큰)에서 선택해야 했다. 🚀 상태 저장 선택(세션(Session), 쿠키(Cook..
👀 RequestEntity란? RequestEntity는 HTTP 요청을 나타내는 객체이다. 요청 헤더, HTTP 메서드, URI 등의 정보를 포함한다. 👨👧 RequestEntity의 종류 RequestEntity는 크게 2가지 종류로 나누어진다. 요청 본문이 없는 경우 RequestEntity requestEntity = new RequestEntity (헤더, 메서드, 요청 URI); ex) RequestEntity requestEntity = new RequestEntity (headers, HttpMethod.GET, uri); 요청 본문이 있는 경우 RequestEntity requestEntity = new RequestEntity (본문 데이터, 헤더, 메서드, URI); ex) Req..

🚀 서비스 분류 먼저 서비스 분류다. 맨 처음에 UserSerivce 한 곳에만 개발을 했어도 별 문제가 없었다. 하지만 이제 메타 데이터, 데이터 매칭 등 여러 가지 성격을 가진 기능들이 나타나니 나의 코드는 혼잡해졌었다. 보이는가? 닉네임으로 유저 정보 조회 고유 식별자로 유저 정보 조회 유저의 데이터 매칭 전 경기별 최고 티어 정보 리스트 조회 유저 데이터와 피파 데이터 매칭(경기 종류, 티어) 유저의 데이터 매칭 후 경기별 최고 티어의 데이터 정보 조회 위 모든 기능이 UserSerivce 한 곳에 작성했었다. 메서드만 7개니 구현체 코드는 안 보여줘도 얼마나 복잡한지 알 거라 믿는다. 👀 어떻게 분류할 거야? 아무튼 이러한 복잡한 코드 구성은 [개발, 수정, 리뷰]등을 하기에 최악이었다. 그렇게..

📑 개발할 기능 순서(이전 글 내용 요약) 유저 고유 식별자로 역대 최고 등급 조회 피파의 메타 데이터 조회 (매치 종류, 등급 식별자) 유저의 matchType(경기 종류), division(최고 티어)의 식별 번호들을 피파 메타 데이터와 매칭시켜 값을 추출 추출한 데이터를 경기당 1개의 객체(DTO)로 변환 후 리스트로(감독, 공식) 모아서 화면에 표현 💻 기능 개발 전 DTO 작성 먼저 보면 API 결과 값이 보인다. 이 뜻은 곧 내가 만들어야 할 DTO의 인터페이스라고 할 수 있다. DTO의 필요성은 간단하게 설명하자면(추후 개별 글 작성) DTO 객체를 사용함으로써 클라이언트에게 필요한 정보만 전송할 수 있다. 3가지의 DTO를 작성해 보자. (DivisionDTO, MatchTypeDTO, U..

💻 다음 개발예정 기능 현재 지금까지 [유저 닉네임으로 유저 정보 조회], [유저 고유 식별자로 유저 정보 조회]를 개발했다 다음은 아래에 있는 [유저 고유 식별자로 역대 최고 등급 조회]를 개발해 보자. 접속해 보니 [https://api.nexon.co.kr/fifaonline4/v1.0/users/{accessid}/maxdivision]로 요청하면 결과를 얻어온다고 확인된다. 그렇다면 accessid를 넣어서 요청 테스트 후 결과 값을 확인해 본다. 응답 결과로 matchType(경기 종류), division(최고 티어), achievementDate(달성 날짜)가 반환되는 걸 확인할 수 있다. 하지만 여기서 더 확인할 게 있다. 설명 부분에 보면 (/metadata/??? API 참고)가 보인다..
😧 이전 상황 이전에 상품 엔티티를 만들고 상품 생성(Create)까지 개발을 마쳤었다. 하지만 이후 진행과정에서 교재를 참고해서 하다 보니 개발 속도에 많은 지연이 있었고 팀원과 회의 끝에 구글링을 통해서 빠르게 진행해보기로 했다 '단 모든 코드를 잘 이해하고 넘어가는 것'을 가장 중요하게 이야기 했었다. 왜냐하면 당연히 그 코드를 이해해야 내 것이 되고 앞으로의 프로젝트에서 응용이 가능하기 때문이다 이 것이 클론코딩, 복+붙 (코드 긁어오기)에 대한 주의점이다. (코드 수정 시작) 🧑🏻💻 엔티티, DTO (코드 수정) 엔티티와 DTO( + FormDTO)를 수정하였다. /** * @version 1.0 * @Author seodong-geun * @since 2023/04/10 */ @Entity ..