no image
MemberServiceImpl 인터페이스에 대하여
[글의 의도] 공부할 양이 너무 많다는 걸 깨닫고 방황하며 이리저리 패스트캠퍼스 강의를 듣다가 어디선가 주워 들어본 내용의 '유지보수하기 좋은 코드 디자인 ' - '적절한 객체의 크기를 찾아가는 여정' 강의를 우연히 들었다. 강의 내용을 어디서 들어봤나 싶었는데 4개월 전 부트캠프 초반 멘토님께서 과제를 리뷰해줄 때 들었던 내용과 일치하여 블로그에 작성해보기로 했다. 강의의 주 내용은 흔히 개발을 할 때, Controller, Service, Repository 계층으로 개발을 진행한다. 이 때 MemberService를 인터페이스로 선언하고 구현체로 MemberServiceImpl을 사용했었는데 이에 관한 인터페이스 내용이다. [가물가물한 멘토님의 피드백 내용] 내 기억속에 KakaoAPI를 활용한 도..
2023.12.20
no image
패스트캠퍼스X야놀자: 미니프로젝트(숙박 예약 서비스) 후기
이번 미니 프로젝트는 여러 개의 조에서 동일한 주제로 FE 수강생들과 협업 프로젝트를 진행한다. 기존에는 BE 수강생들 끼리 API를 설계하는 주제를 가지고 프로젝트를 진행했었는데 FE 수강생들과 협업하는 경험은 쉽게 경험하지 못할 좋은 기회인 것 같다. [싱크업 미팅] BE 수강생 4명이서 한 팀을 이루었고 우리 조는 사다리 타기로 조장을 선정했다. 이후에 데이터베이스 설계와 API 설계를 진행했다. [나의 역할] 팀원 모두 초반에는 요구사항을 분석하고 도메인을 설계하며 공통적인 작업을 진행했고 이후에는 역할을 나눠서 따로 개발을 진행했다. 나는 로그인과 회원가입, Spring Security 인증, 인가를 담당했다. 이 주제는 현업에서 비교적 신입에게 맡기지 않는 분야이긴 하지만.. 그래도 한 번 맛..
2023.12.19
no image
SpringSecurity AuthenticationEntryPoint 동작하지 않았던 이유
[글쓰는 의도] 미니프로젝트 과정에서 스프링 시큐리티를 담당했다. JWT AccessToken을 인증하는 과정에서 분명 AuthenticationException 에러가 발생하면 AuthenticationEntryPoint가 동작해서 예외를 처리하기 마련인데 아무리 찾아봐도 내가 커스텀한 AuthenticationEntryPoint 는 동작하지 않았다. [여러가지 해결방안] AI와 열띤 토론을 한 결과 해결책은 다음과 같았다. 1. 커스텀한 예외가 AuthenticationException을 상속받지 못한 경우 public class BadTokenException extends AuthenticationException 2. Spring Bean으로 커스텀한 AuthenticationEntryPoint..
2023.11.27
no image
프로젝트 도중 마주친 @Value의 주의사항
[글 쓴 의도] 이번 토이 프로젝트 주제는 이전에 진행했던 동일 주제에 로그인, Open API, 회원가입 등 다양한 기능을 추가하는 방향으로 진행하기로 했다. 내가 맡은 부분은 Kaka Open API를 연결하고, 여정을 등록하는 과정에서 장소 이름을 입력하면 도로명 주소로 변환하는 기능을 구현하기로 했다. Key 값을 외부에 노출하지 않기 위해 .env 파일에 KAKAO_KEY 필드를 추가하고 application.yaml 파일에 api.key 항목을 추가해서 @Value 어노테이션으로 관리하려고 했다. 하지만 @Value 어노테이션이 잘 동작하지 않는 것을 확인했다. 이유를 알아보자 [문제가 발생한 이유] @Value를 썼을 때, 인텔리제이가 아무 잔소리 없이 넘어갔다는 것은 매핑은 잘 되었다고 볼..
2023.11.13
no image
application.yaml 파일 .env 설정
[글을 쓰는 의도] 야놀자 패캠 부트캠프에서 팀 단위로 하는 토이 프로젝트 마다 벨트를 꽉 매고 버스를 타고있다. 다음 프로젝트를 위해 개인 프로젝트를 만들어서 Spring JPA를 복습하려고 한다. 간단하게 프로젝트를 만들고 MySQL과 JPA를 연동하는 과정에서 애를 먹어서 나중엔 고생을 덜 하려고 글로 남기려고 한다. [막힌 부분] 먼저 Spring Init에서 간단한 의존성을 추가하고 프로젝트를 만들었다. 그리고 MySQL을 Docker-compose를 사용해서 DB를 만들었고 이 과정에서 지난 팀 프로젝트에서 썼던 외부 .env 파일을 사용해 docker.yml, .env , application.yaml을 설정했다. //application.yaml spring: config: import: ..
2023.11.08
no image
패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_토이프로젝트2 후기
Title : 여행 여정을 기록과 관리하는 SNS 서비스 2단계 2단계 토이프로젝트는 한 달 전 팀원들과 동일하게, 비슷한 주제로 Spring을 가지고 진행했다. 1단계 서비스와 비슷한 요구사항을 가지고 특징은 API를 설계하고 개발하는 것이 중요하다고 생각했다. 워낙 팀원분들이 잘 하시는 분들이여서.. 이번에도 배운다는 마인드로 임했다. 1단계에서는 여정 부분을 개발했다. 2단계에서도 역할을 나누기 위해 랜덤으로 역할을 정하고 나는 여정 부분을 맡게 되었다. 개발 일정 개발 일정은 위 사진과 같이 동일하게 진행했다. 첫 날에는 API 설계 및 ERD 설계를 진행하고 팀원 역할을 배정했다. 나머지 일정도 위 계획표와 비슷하게 동일했다. API 설계 (여행, 여정) API 설계는 위에 사진과 같이 진행했다..
2023.11.02
no image
프로그래머스 오답노트 (개인정보 수집 유효기간)
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr https://school.programmers.co.kr/learn/courses/30/lessons/150370 import java.util.*; import java.time.*; class Solution { public LocalDate func(int year, int month, int day, int terms){ LocalDate days = Year.of(year).atMonth(month).atDay(day); return days.plusMonths(terms); } public int..
2023.10.19
no image
패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_토이프로젝트 후기
Title : 여행 여정을 기록과 관리하는 SNS 서비스 1단계 이번 토이프로젝트는 조를 새로 배정 받아서 5인 1조로 과제를 수행했다. 첫 조원분들과 만나는 자리에서 회의를 간단하게 진행했는데 다 프로젝트 경험이 여러 번 있으시고, 관련 지식도 많은 팀원 분들을 만났다. 토이프로젝트 진행은 화면에 출력하는 view 1명, 여행관련 2명, 여정관련 2명으로 나눠서 진행했고 나는 여정 파트를 맡았다. 개발 일정과 프로젝트 기획은 아래와 같다. 제안서에는 여행속에 여정이 배열로 존재하는 구성이었는데, 우리 조는 여행 파일 따로, 여정 파일 따로 관리하기로 하였고, 여정을 추가, 읽기 위해서는 여행 파일의 인덱스가 필요하다는 특징이 있다. 그렇게 구조를 설계하고 각자 개발에 들어갔다. 나는 이번이 여럿이서 하..
2023.09.15
no image
패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_2차 과제 후기
1차 과제와 비슷하게 Kakao API를 활용해서 HTTP 요청을 보내고, 응답을 받는 주제로 과제를 진행했다. 동작 - 데이터 - 객체 - 클래스 순서로 객체를 모델링 해야하는데 아직 참 어렵다. 그래도 더 나아질 부분만 남았다는 뜻이니깐 객체지향 공부를 더 해야겠다. 문제 1 JDBC를 사용하기 위해 Driver에 연결된 Connection을 인자로 받고, List list를 DB 저장소로 저장하는 메서드 이다. PreparedStatement 객체를 생성해서 사용을 하는데 Price와 Sale_price를 넣는 과정에서 SQL 문 ? 자리에 매칭이 되지 않는 문제가 있었다. intValue를 붙여줘서 잘 동작하긴 하지만 IDE에서 필요 없는 변환이라고 도움말이 뜨긴 한다. 이 부분에 대해서는 Pre..
2023.09.03