본문 바로가기
[Java] JavaMailSender "javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted." 오류 원인 및 해결 JavaMailSender STARTTLS 인증 오류를 해결한 후 또 다른 에러가 발생하였다.. 에러 메시지는 아래와 같았는데 [Request processing failed; nested exception is org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials e8-20020a62ee0800000.. 2023. 8. 31.
[Java] JavaMailSender "com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first." 오류 원인 및 해결법 스프링부트에서 JavaMailSender로 이메일 발송 기능을 구현 중 여러가지 오류가 발생하여 고치는데 꽤 애를 먹었다.. 첫번째 오류는 아래와 같은 메시지를 포함하고 있었다. Failed message 1: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. y4-20020aa78544000000b00679a4b56e41sm293970pfn.43 - gsmtp ] with root cause org.springframework.mail.MailSendException: Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 .. 2023. 8. 31.
[MyBatis] Parameter not found. Available parameters are [arg1, arg0, param1, param2] 이슈 리액트에서 회원 정보 변경 데이터를 백엔드로 전달해 업데이트 로직을 구현하던 중, xml 파일의 쿼리문에서 [MyBatis] Parameter 'newUserName' not found. Available parameters are [arg1, arg0, param1, param2] 라는 오류가 발생하였다. UPDATE user SET userName = #{newUserName} WHERE userId = #{userId} 분명 'newUserName' 데이터가 정상적으로 전달되었고, 쿼리문도 틀린 부분이 없어 헤매다가 'Parameter' 에서 힌트를 찾을 수 있었다. 원인 변경 전 메소드 public int changeUserName(@RequestBody Map requestData) { //re.. 2023. 8. 29.
[React] Context API 사용법 일반적으로 React에서 컴포넌트 간에 데이터를 전달할 경우 props를 사용하여 부모 컴포넌트 -> 자식 컴포넌트로 데이터를 넘겨주고 이어받는 방식을 많이 사용하게 된다. 그런데 멀리 떨어진 컴포넌트로 데이터를 전달하거나, props를 사용하기 적절치 않은 경우가 있다. 그럴 때 유용하게 사용할 수 있는 Context API를 설명하고, 적용하여 프로젝트를 개선한 사례를 기록하려고 한다. 1. Context API의 개념 React Context API는 React 애플리케이션에서 전역 상태를 관리하고 컴포넌트 간에 데이터를 효율적으로 전달하기 위한 도구이다. Props를 계속해서 컴포넌트로 전달하는 번거로움을 줄이고, 상태 및 데이터를 보다 쉽게 공유할 수 있도록 도와주는 역할을 한다. 2. Cont.. 2023. 8. 26.
[SpringBoot] JSON 데이터 DB 파싱 오류 및 해결 오류 발생 KMDB에서 제공하는 오픈 API로 영화 정보를 요청하고 응답 받은 데이터를 DB에 저장하기 위해 DTO 클래스를 만들고 JSON 데이터를 파싱하려고 했는데 테이블에 NULL값이 들어오는 오류가 발생했다. API 응답 데이터의 구조는 아래와 같았고 { "Query": "", "KMAQuery": "", "TotalCount": 1, "Data": [ { "CollName": "kmdb_new2", "TotalCount": 1, "Count": 1, "Result": [ { "DOCID": "F07555", "movieId": "F", "movieSeq": "07555", "title": " 에이.아이.", "titleEng": "A.I.", "titleOrg": "Artificial Intel.. 2023. 8. 9.
[React] 리액트 쿠키 사용법 웹사이트에서 '쿠키'를 이용하면 클라이언트를 식별하는데 유용하게 활용이 가능하다. 나는 쿠키로 회원과 비회원을 구분해 useState 훅으로 ui를 유동적으로 변경하는 방식으로 프론트엔드를 개발중이다. 그래서 리액트의 'cookie' 사용법에 대해 포스팅하려고 한다. 여기서 주의할 것은 'cookie'와 'react-cookie'는 문법이 다르다는 점이다. 'js-cookie'도 조금 다르다. 난 이전에 'react-cookie'로 개발을 해봤는데, 이번에는 사용해보지 않은 'cookie'를 활용해보았다. yarn 홈페이지 기준 이용자 수가 월등히 많은걸 보니 훨씬 상용적으로 쓰이는 듯 싶었다. 아무튼 패키지를 설치할 때 세 가지를 확실히 구분하는게 좋을 듯. 우선, 라이브러리를 설치하고, 사용할 컴포넌.. 2023. 7. 27.
[MyBatis] 스프링 부트 MyBatis 에러 발생과 해결 스프링 부트와 MySQL DB를 연동하여 간단한 로그인/회원가입을 처리하는 기능을 구현하려고 하였다. 브라우저에서 입력 받은 아이디와 비밀번호를 전달하면 백엔드 서버 - DB를 거쳐 일치하는 값이 있으면 성공, 없으면 실패를 반환하도록 설정하였다. 에러 발생 그런데 요청을 보내면 계속해서 해당 오류가 발생하여 작업을 수행하지 못했다. org.apache.ibatis.binding.bindingexception invalid bound statement not found 검색해보니 DAO (데이터베이스 접근) 객체와 DB 데이터를 매핑해주는 Mapper.xml 파일에서 오류가 일어나는 것으로 판단해볼 수 있었고, 꽤나 흔하게 나타나는 오류인 듯 하였다. 관련된 정보를 많이 찾을 수 있었으나 해결하는데 꽤 .. 2023. 7. 21.
[프로그래머스] 완주하지 못한 선수 문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한 조건 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion return ["leo", "kiki".. 2023. 6. 29.
[프로그래머스] 예산 문제 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다. 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요. 제한 조건 d는 부서별로 신청한 금액.. 2023. 6. 21.