FastCampus - 한번에 끝내는 Java|Spring 웹 개발 (55) 썸네일형 리스트형 스프링 Ch 6-5 Filter / Interceptor - 패스트캠퍼스 챌린지 11일차 이번에는 앞단에서 핸들러로 요청/응답이 가기 전에 먼저 낚아채는 방법을 배웁니다. 방법은 두 가지입니다. Filter 인터페이스 구현 (및 컴포넌트로 밀어넣기): 앞단에서 ServletRequest / ServletResponse 를 조작할 수 있습니다. 날것의 요청을 읽거나 수정할 수 있는 만큼 매우 번거롭습니다. getReader() 를 앞에서 호출하면 뒤에서 두 번째로 호출해서 에러를 일으킨다던가... 이 부분은 우회할 수 있는 수단이 여럿 있다고 하지만 강의에서는 이상한 방법을 쓰더라구요. ContentCachingRequest 로 래핑을 하고, 요청이 다 처리된 뒤에 요청을 읽는다뇨? 설명도 좀 말이 안 됩니다. 다른 방법도 있다고 하니 차라리 나중에 필요할 때 해보는게 좋겠습니다. 방법은, j.. 스프링 Ch 6-3 Exception 처리 + alpha - 패스트캠퍼스 챌린지 10일차 에러 처리 Exception 처리 단원에서는 간단하게 예외처리에 대해서 설명해주시는데, 웹앱 에러 처리의 어려움에 대한 내용이 나왔습니다. 에러를 반환하는 방법 (내려준다 내려준다 하니까 나도 내려줘야 할 거 같자나!!) 기본 에러 페이지 (스프링의 "화이트라벨" 페이지) 에러 코드를 떨구기 (제 입장에서) 바람직하지 않은 케이스: 클라이언트에서 200밖에 처리 못 하는 경우에는 메시지에 담아서 (*용문 욕설*) 에러 처리의 방법에 대해서는 요새 고민중인 내용이고, 이 글에 누구를 위해 어떻게 에러를 내줄건지 조금 더 자세히 나와있습니다. https://www.lpalmieri.com/posts/error-handling-rust/ (Zero to Production in Rust 라는 책의 일부를 블로.. 스프링 Ch 6-2 custom validation - 패스트캠퍼스 챌린지 9일차 어제에 이어 spring validation 입니다. 오늘 강의 영상은 custom validation 부분인데, 어제 실습도 안 했으니 그것도 겸합니다. 마음같아선 진도를 더 나가고 싶긴 한데, 구정인 것도 있고 해서 일단 강의 하나와 더는 미룰 수 없는 실습 정도로 만족해야겠습니다. 검증은 스펙이다 저번에 언뜻 보고 Hibernate 의 구현체를 사용하는 거까진 봤는데, 알고보니 표준? 이라고 해야하나? 공통 스펙이 있고 그걸 구현하는 형태인 모양이더라구요. 유독 자바가 이런 게 많네요? 험난한 길을 먼저 앞서서 달렸다보니 이런거려나요. hibernate 의 구현체는 spring boot starter validationm 에 구현체로서 포함되어있다고 합니다. 어노테이션 자동완성을 켜면 꼭 두 개가 .. 스프링 Ch 6-1 validation - 패스트캠퍼스 챌린지 8일차 드디어 다음 챕터입니다. Object 에 어노테이션을 붙이던, newtype 패턴으로 검증 로직을 감싸던 데이터 객체의 검증 로직을 적절히 비즈니스 로직과 분리하는 것은 필수입니다. 아니면 하나하나 그걸 다 손수 if else 같은거로 검증하고 있어야 하니까요. 프로그래머가 제일 싫어하는 게 노가다 아니겠습니까? Spring 에서는 데이터 객체에 어노테이션을 붙여서 검증 방식을 결정합니다. 꽤나 풍부한 내장 검증 로직이 있어서 있는 거만 가져다써도 웬만한 사례에선 불편함이 없을 것 같아보이네요. 1강에서는 아직 커스텀 검증 로직을 만드는 방법은 나오지 않았어서 검증 로직이 어디에 들어가는지는 나오지 않았는데요, 아마 같은 클래스이거나 다른 클래스에 별도로 만들거나 또 어노테이션을 만들거나 그러지 않을까요.. 스프링 Ch 5 OM/Annotation 정리 - 패스트캠퍼스 챌린지 7일차 오늘은 jackson OM 의 노드를 직접 사용해보기 / 어노테이션 정리 두 가지의 내용입니다. 시간이 없었는데 짧은 내용이라 이득 본 거 같은 기분이네요. Jackson 자세히 jackson OM 의 핵심 노드는 JsonNode (수정 불가) 와 ObjectNode (수정 가능) 두 가지입니다. 어째서인지 IDE가 말을 안 들어서 확인은 못 했지만 JsonNode 는 인터페이스고 ObjectNode 는 실제 오브젝트겠죠.... 는 틀렸네요. 그냥 부모클래스인가봅니다. JsonNode: https://www.javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/latest/com/fasterxml/jackson/databind/JsonNode.html .. 스프링 Ch 5 스프링 좀 더 - AOP (2) - 패스트캠퍼스 챌린지 6일차 오늘은 AOP 맛보기 2강을 본다는 걸 핑계로, eclipse 재단의 aspectj 에 대한 근본적인 이해를 시도했습니다. 무엇보다도 AOP (1) 강의에서 나왔던 Pointcut 지점의 표현식이 완전 블랙박스여서 나중에 활용하려고 하더라도 전혀 쓸 수 없는 상태이기 때문에 언젠가 한 번은 알아뒀어야 할 부분이니, 나온 김에 배워두고 가는 게 좋겠는 생각이 들더라구요. kotlin 으로 하는 실습은 덤이구요. 뭐 별 차이는 없드라구요 ㅋㅋ Eclipse Aspectj 누가 만들었는가? : PARC (캘리포니아 연구 기업) 누가 만들고 있는가: Eclipse 홈페이지: https://www.eclipse.org/aspectj 문서 포탈: https://www.eclipse.org/aspectj/docs.p.. 스프링 Ch 5 스프링 좀 더 - AOP (1) - 패스트캠퍼스 챌린지 5일차 어제도 오늘도 시간이 없습니다. 어제는 일정이 있었고 오늘은 구정이라 이동 예정이 있거든요. 피곤한 몸이라 늦잠을 잔 지금 짧은 시간이라도 내야 했습니다. 이 스프링 강의가 다 그렇듯이 이번 AOP는 aspectj 라는 라이브러리의 사용법을 배웁니다. 역시 jackson 처럼 스프링에서 지원해주는 바가 있는건지 아니면 클래스에 @Component 를 넣음으로서 같이 처리되는지는 자세하게 파보지는않았지만 아무튼 스프링과 함께 삐그덕거림 없이 (seamlessly) 사용할 수 있습니다. AOP는 아무래도 로깅 같은 cross concern 영역에 쓰는 모양입니다. 주요 어노테이션은... 클래스에 달기 @Aspect - AOP 실행 설정 및 코드가 담긴 클래스에 붙입니다 @Component - 스프링 컴포넌트.. 스프링 Ch 5 스프링 좀 더 - IoC, DI - 패스트캠퍼스 챌린지 4일차 오늘은 아침에 일찍 나가야 했어서, 늦게 자고 일찍 일어나는 수명단축 어른이가 되었음에도 그저 아침에 공부시간을 낼 수는 없었습니다. 오늘이 지나가려고 하니 급하네요... 오늘의 학습내용은 스프링 살짝더보기의 01~03 영상입니다. DI와 IoC 는 제가 처음으로 입사했을 때 1~2년차 사이에 궁금해서 공부를 따로 했던 내용입니다. 비록 그게 스프링은 아니지만요. 제품에 ninject 라는 C# DI 컨테이너도 넣어봤구요... 이게 대체 뭘까를 이해하게 되니 만들라면 간단한 것 정도는 만들수도 있을 것 같습니다. 스프링의 핵심에는 IoC 의 역할을 해주는 DI 컨테이너가 있습니다. 어... 이 부분은 Pluralsight 에서 깨작깨작 스프링을 공부했을 때 배웠던 내용이네요. DI - 밖에서 필요한 객체.. 스프링 Ch 04 스프링 부트 시작하기 - 패스트캠퍼스 챌린지 3일차 오늘은 나쁜 어른이었습니다. 어제 드디어 VR을 할 수 있는 환경을 마련해서 운동삼아 2주만에 VR을 켜려고 했더니 웬걸 충전이 안 되는 무한부팅 상태에 빠져버렸더라구요. 그래서 늦게 자는 바람에... 파트 3. 스프링 입문 중 챕터 04 "스프링 부트 시작하기" 를 쭉 달렸습니다. 이전에 좀 배워본 것도 있고 일에서 봤던 것도 있고 해서 솔직히 그냥 달려도 크게 문제는 없었어요. 다만 사용방법을 체계적으로 정리한 적은 없다보니 API 핸들러를 어떻게 작성하는지에 대한 절차나 주요 어노테이션을 빠르게 오버뷰하는데는 도움이 되었습니다. 용어 설명이 좀 빠져있는 건 아쉬웠습니다. 눈에 띄더라구요. 영상 내내 DTO에 대한 얘기가 나오는데, 이게 무슨 용어인지는 설명을 안 해주더라구요. 아파 앞의 두 개 챕터.. 스프링 Ch03 웹 개발 개론 4 (2회차) - 패스트캠퍼스 챌린지 2일차 이번에도 복습입니다. 이게 그냥 보고 슥 넘어가면 빨랐는데 손수 하나하나 정리하려니 시간 소요가 좀 크더라구요. 오늘도 늦잠... 치고는 평소보다는 일찍 일어났지만 (짝짝짝짝~) 그래도 목표한 것보다는 늦잠을 잔지라 강의를 두 개 보기에는 무리였습니다. 좀 있으면 출근준비해야돼... HTTP 프로토콜에 대해 간략하게 다루는 내용이었습니다. GET POST PUT DELETE가 가장 중요하고 그거 위주로 설명을 해주시는데, 리스트에 PATCH 가 빠져있더라구요? MDN에는 있던데. 그리고 표에 몇몇 내용이 빠져있던데.... 일단 PATCH 가 빠져있는 건 의도하신 거 같구요 (혼동을 유발할 수 있고 잘 모르지만 아마 잘 안 쓰일듯) 나머지는 진짜 이런 게 있다 정도만 알아두면 되지 않을까 싶구요? HTTP.. 이전 1 2 3 4 5 6 다음