일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 1과목
- 코딩교육봉사
- kotlin
- 프로그래머스
- 문제풀이
- 파이썬
- softeer
- 백준알고리즘
- MYSQL
- 정보처리산업기사
- 스프링
- 회고
- 코딩봉사
- 공부일지
- 데이터베이스
- 코틀린
- 알고리즘
- BFS
- 시나공
- C++
- 자바
- python
- 백준
- 소프티어
- java
- 백준 알고리즘
- CJ UNIT
- SQL
- SW봉사
- programmers
- Today
- Total
목록개발/이슈, 트러블슈팅 (21)
JIE0025
✅ 이메일 전송 구현 이메일 전송에 사용가능한 서비스는 여러가지가 있다. 대표적으로는 AWS Email Service도 존재하지만 이번 마이버디 프로젝트에서는 Spring boot 내부의 SMTP를 도입하였다. ✅ Why SMTP ? 왜 Spring boot의 SMTP를 사용했는가? 내부 SMTP는 애플리케이션에서 이메일을 보낼 수 있는 가장 간단한 방법이다. Spring boot에서는 JavaMailSender인터페이스가 존재한다. 이 인터페이스를 통해 이메일 전송에 기본적인 설정이 되어 있고, SMTP 서버를 통해 이메일이 전송된다. SMTP의 장점 1. 안정성 : 이메일 전송을 위한 표준 프로토콜이라서 안정성이 높다. 2. 보안 : 이메일 전송에 TLS/SSL과 같은암호화 기술을 적용이 가능, 데이..
✅ 의문 FE가 API 요청 응답 기능테스트를 진행하며 발생하는 로그를 확인했는데, GET '/api/v1/amenities?state=%EA%B2%BD%EA%B8%B0 이렇게 로그가 찍힌걸 확인되었다. POSTMAN으로 테스트했을 때에도 나는한글로 GET '/api/v1/amenities?state=경기 이렇게 보냈었기 떄문에 로그에서도 한글로 나올 줄 알았는데, 전혀 다른 문자열이 들어오고 있어서 잘 들어오고 있는게 맞는지 체크가 필요했다. 알아보니 해당 문자열은 한글이 인코딩된 값이었다. ✅ 인코딩 ?URL 인코딩, URL 디코딩은 컴퓨터에 여러 언어를 사용하다보니 생긴 문제를 해결하기 위해서 나온 것 인코딩된 값을 통해 컴퓨터가 더 명확히, 편하게 읽는다고 한다. param으로 한글을 보내고 있는..
Description: The dependencies of some of the beans in the application context form a cycle: answerController defined in file [/Users/kimchangha/Desktop/projects/Section5/pre-project/new/seb42_pre_024/backend/build/classes/java/main/com/codestates_pre024/stackoverflow/answer/controller/AnswerController.class] ┌─────┐ | answerService defined in file [/Users/kimchangha/Desktop/projects/Section5/pre..
✅ 선행 학습 https://velog.io/@cada/%ED%86%A0%EA%B7%BC-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D%EC%97%90%EC%84%9C-bearer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C 토근 기반 인증에서 bearer는 무엇일까? 본 글은 MDN - HTTP 인증, Veloport님의 게시글을 참고하여 작성되었습니다. 자세하게 알고싶으신 분은 해당 링크를 참고해주세요.토큰 기반 인증인증 타입마치며토큰 기반 인증은 쿠키나 세션을 이 velog.io ✅ 상황 로그인 요청을 날리고, AccessToken과 RefreshToken이 정상적으로 돌아오는 것을 확인했다. ✅ 의문 JWT 토큰 인증을 구별하기 위해 Be..
✅ 문제 통합테스트코드를 두개 작성했다. 각각의 테스트는 정상적으로 동작하지만, 클래스 단위로 동작시 자꾸 테스트가 실패했다. ✅ 원인 분석 통합테스트는 데이터베이스까지 반영이 되는것을 확인하면서 진행하는 테스트이기 때문에 테스트가 넘어가게되면 따로 데이터베이스를 처리해주지 않는한, 이전 테스트에서 저장한 데이터가 남아있나보다. 이 경우 @BeforeEach 혹은 @AfterEach에서 데이터베이스를 비워주는 작업이 필요해보인다! ✅ 수리 💻 Stack Overflow의 추천 @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) https://stackoverflow.com/questions/34617152/how-to..
object references an unsaved transient instance - save the transient instance before flushing 연관되어 있는 두엔티티가 존재하는데, save()하는 과정에서 오류가 발생한다. 오류메세지를 해석해보면 '개체가 저장되지 않은 임시 인스턴스를 참조합니다. - 플러시(영속화)하기 전에 임시 인스턴스를 저장합니다.' 즉 어떤 객체가 영속화 될 때, 연관된 객체도 영속화 해주는 코드가 필요하다 ✅ 영속성 전이를 사용한 해결 연관관계를 맺어주고, 영속성 전이를 사용해야 객체에 사용되는 행동이 그 관계를 맺어준 객체한테까지 전파되게 해야한다. 특정 엔티티에 대해 특정한 작업을 수행하면 관련된 엔티티에도 동일한 작업을 수행한다 JPA에서는 연관된 ..
//private final EntityManager em; //엔티티 매니저를 가져오는게 문제가 됨 >> 비추천 //JPA or JPQL or QueryBuilder (QueryDsl)을 이용해 개선이 필요함 public List findAll(){ return em.createQuery( "select c " + "from Category c " + "where c.parent is NULL" ,Category.class) .getResultList(); } 앞서 entitymanager를 직접 불러와 사용하는것 엔티티는 1개, 레포지토리를 두개씩 만들어 사용한것 (서비스에 2개의 의존 레포지토리가 생겼다) 두가지 문제가 있어서 QueryDSL을 사용해보는겸 개선을 해보고자 했다. 예전에 스터디하면서..
요청메세지를 날렸는데 405가 나왔다. WARN 15231 --- [nio-8080-exec5] o.s.web.servlet.PageNotFound : Request method 'PATCH' not supported WARN 15231 --- [nio-8080-exec-5] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PATCH' not supported] WARN 15231 --- [nio-8080-exec-6] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [or..
✅ 에러 메세지 javax.servlet.ServletException: No adapter for handler SpringBoot No adapter for handler [com.FlagHome.backend.v1.category.controller.CategoryController@36a848f7]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler at org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter(DispatcherServlet.java:1305) ~[spring-webmvc-5.3.22.jar:5..
build.gradle에 간단한 설정을 추가해줬는데 오류가 났다. ✅ Error → Could not find method compile() for arguments → 인수에 대한 메소드 compile()을 찾을 수 없습니다. ✅ Solution 결론은 gradle 버전 문제이다. 다음 메소드로 대체해 사용하면 해결할 수 있다. compile() >> implementation() testCompile() >> testImplementation()