목록2024/10 (5)
nhyunzi
application.yml이나 application.properties 파일에 DB 비밀번호 또는 키 값을 명시해두는 경우 중요 정보들이 외부로 노출되어 위험할 수 있다. 해결 방법 1. application.properties 파일을 .git ignore 파일에 추가하여 git push시 이 파일을 제외하도록 하는 방법협업자들이 각자 application.properties파일의 사본을 갖고 있고 나머지 코드만 push하여 application.properties파일은 원격 레포지토리에 업로드 되지 않도록 하는 방법이다. 하지만 application.properties파일이 존재하지 않으면 Spring Boot애플리케이션의 설정 정보가 없기 때문에 빌드와 배포가 정상적으로 수행되지 않을 수 있다. ..
스크랩북의 항목을 다중 선택하여 삭제할 때, 마지막 선택 항목만 삭제되는 문제가 있었다. 1. 덮어쓰기 문제 itemIds = $(this).data('item-id');를 사용해서 선택된 항목의 ID를 배열에 추가할 때, 새로운 값이 이전 데이터를 대체했다.이로 인해 배열에는 마지막으로 선택된 항목의 ID만 남게 되고 다른 선택 항목들은 사라지게 됐다. 2. 직렬화 문제$('#delete-item-ids').val(itemIds);를 사용하면 배열의 내용이 아닌 그 배열의 참조가 저장됐다. 이렇게 저장된 데이터가 서버에 전송될 때는 배열의 내용이 아닌 단일 항목 정보로 처리되어, 실제로 삭제해야 할 여러 항목의 ID가 서버로 전송되지 않았다. 해결 방안1. push() 메서드 사용기존 데이터를 유..
파이널 프로젝트 초기 단계에서 회원가입 로직을 우선적으로 개발하였고, 이 과정에서 Userservice에서 JavaMailSender를 주입하고 랜덤 코드를 발생시켜 인증 메일을 발송하는 기능을 구현했다. 이후 다른 팀원이 이메일 인증 기능을 모듈화하기 위해 MailService를 별도로 만들었지만, 시간 제약으로 인해 기존에 작성한 UserService와 통합을 하지 못했다. 이로 인해 코드 중복이 발생하고 가독성이 저하되는 문제가 발생했다. 이러한 문제를 해결하기 위해, 메일 발송 기능을 MailService로 통합하고 Userservice에서는 해당 MailService를 주입하여 사용하는 방식으로 수정했다. [기존 코드 : Userservice와 Mailservice 별도의 메일 발송 기능]@Se..
메인 페이지에 표시되는 게시물에 대해 하트를 클릭하여 좋아요 상태를 관리하는 기능을 구현했다.사용자가 하트를 클릭하면 하트가 채워져 표시되고, 다시 클릭하면 하트가 비워져 좋아요를 해제하는 방식이다. 기존의 접근 방식은 getWish 메서드에서 가져온 wish 객체가 null이거나, 메서드 실행 중 예외가 발생할 경우NullpointerException 이 발생할 위험이 있었다. 이 문제를 해결하기 위해, Optional을 도입하여 isPresent()를 통해 좋아요가 존재할 경우에만 처리 로직이 실행 되도록 했다. 이를 통해 NullpointerException을 방지하여 코드의 안정성을 강화했다. [기존 코드]// addWish.jsp Wish savedWish = wishDao.getWish(wis..
기존의 네비게이션 바는 JSP를 통해 동적인 메뉴 항목을 생성하고, Bootstrap을 활용하여 스타일을 적용했다. 1. 문자열 리터럴을 사용해 코드의 가독성이 떨어졌다.2. 직접 문자열을 입력함에 따라 오타가 발생할 가능성이 있다.3. 메뉴 항목을 수정할 때 여러 곳에서 문자열을 변경해야 했기 때문에 유지 보수가 어렵다. 이러한 단점을 개선하기 위해, 메뉴 항목을 열거형으로 정의하여 코드를 개선했다.1. Enum을 도입하면 각 메뉴 항목을 명확히 구분할 수 있다.2. 코드의 일관성을 유지하면서 오타 발생 가능성을 줄일 수 있다.3. 메뉴 항목 수정 시 MenuEnum에서만 변경하면 되기 때문에 유지 보수가 더욱 용이하다. [기존 코드 : 문자열 리터럴 사용] ..