728x90
반응형

Web/Spring 14

ConstructorResolver:: Spring Helper Class 내부 구현 뜯어보기 (NoSuchBeanDefinitionException)

들어가며 앞선 포스팅에서 이미 에러를 해결하긴 했지만, 이번에는 NoSuchBeanDefinitionException 에러가 어떤 과정으로 도출됐는지도 알아보자 구체적인 에러와 해결책이 궁금하신 분은 앞서 적은 포스팅 참고하시길 https://kindspoon.tistory.com/228 [트러블슈팅/개념정리] WebMvcTest와 MockBean이 함께 쓰이는 이유(Feat. Mockito) 들어가며 컨트롤러 테스트를 하려고 코드를 열심히 적었따.. 기억에 의존해서 썼더니.... 실패는 물론이고 애초에 contextloader가 작동하지 않았다고 해서 몇 시간 동안 해결책을 찾아 헤맨 끝에 해 kindspoon.tistory.com NoSuchBeanDefinitionException 에러 발생과정 파..

Web/Spring 2023.03.04

[트러블슈팅/개념정리] WebMvcTest와 MockBean이 함께 쓰이는 이유(Feat. Mockito)

들어가며 컨트롤러 테스트를 하려고 코드를 열심히 적었따.. 기억에 의존해서 썼더니.... 실패는 물론이고 애초에 contextloader가 작동하지 않았다고 해서 몇 시간 동안 해결책을 찾아 헤맨 끝에 해결했다. 들인 시간에 비해 허무한 수준의 트러블슈팅이지만.. 테스트용 애너테이션을 학습할 수 있는 기회였다. 직관과 감으로 쓴 야생의 테스트 코드 틀린 테스트 코드 @WebMvcTest @Import( {TestSecurityConfig.class, TestJpaConfig.class} ) @ExtendWith(SpringExtension.class) @AutoConfigureRestDocs public class FeedbackControllerTest { @Autowired MockMvc mockMv..

Web/Spring 2023.03.03

Error Handling w.Spring: 꼼꼼하고 효율적인 예외처리는 어떻게 만들어질까?

0. 들어가며 500 Server Error를 숱하게 보다 보면 진작 예외처리를 꼼꼼히 할걸...하는 후회를 하게 된다. 그러나 예외처리를 설정한다고 하더라고, 에러코드만 띡 나가는 메세지는 너무나 불친절하다. 꼼꼼하면서 성능적으로도 효율적이게 예외처리를 하고 싶다면 무엇을 활용하면 될까? 종류별로 정리해봤다. 1. Spring의 예외처리 관심사와 발전 과정 Spring 예외처리에는 3가지 관심사는 아래와 같다. - WAS 두 번 일시키지 말고 효율적으로 처리하자 - API 사용자를 위해 자세하게 커스텀 응답을 쓰자 - 스프링 내외부에서 발생한 모든 에러를 커버하자 이를 커버하기 위해 예외처리가 발전해온 과정을 정리해보려 한다. 우선 관심사를 어떻게 충족했는지 살펴보자. 1) 효율적인 예외처리: @Exc..

Web/Spring 2023.01.26

Spring Security의 간장공장공장장😱 Authentication? Authorization? Provider? Manager? FilterChain? 쉽게 정리하자

들어가며 스스로의 학습능력에 근본적인 의문을 갖게 됐던 때를 꼽으라고 하면 아마 스프링 시큐리티를 배웠던 일주일을 얘기할 것 같다. 진지하고 심각하게 읽기능력에 중대한 문제가 생긴 게 아닌지 의심하게 만들던 스프링 시큐리티 섹션...무슨 텅트위스터도 아니고 비슷비슷한 용어에 조금씩 다른 흐름이 나를 미취게 만들었다ㅠㅠ 시간이 지나 전체적인 흐름을 이해하고, 용어에 익숙해지니 생각보다 괜찮은데 그때는 왜 그렇게까지 두려워했는지 모르겠다. Spring security-token-Oauth로 이어지는 학습이 러닝커브가 큰 편이라고 나중에야 알게 되었지만 지금 정리 안 하면 나중에 다시 봤을 때 그대로 어려울 것 같아 차근차근 정리해보려 한다. 인증 vs 인가 Authentication=인증=신분증 Author..

Web/Spring 2022.10.23

Spring WebFlux 세팅과 구현 방식 Reactive Programming in Spring Framework

🚀들어가며 Reactive Programming을 학습하다 보니, 늘 서비스의 확장 가능성을 고민해야 하는 입장으로서 지금 당장 쓰지는 않더라도 확실하게 내용을 정리해야겠다는 생각이 들었다. 이전에 포스팅했던 넷플릭스의 Zuul 2 도입기에서 기존 블로킹 코드와의 충돌 부분을 흥미롭게 읽었는데, Webflux에서도 JPA의 트랜잭션이 블로킹이 적용된 코드이므로 연동을 지원하지 않는다는 내용을 보고 왠지 뿌듯했다! 그럼 바로 본론 시작~ 참고로 아래 작성한 프로젝트는 회원이 커피를 주문하고, 스탬프를 적립받는 시스템의 일부다. 커피를 주문하면 스탬프를 찍어주는 기능이 있다보니 회원정보에 스탬프 필드가 들어가 있다. 그 외에 기본적인 CRUD는 보편적인 방식으로 구현했으나, 궁금한 점이 있으시면 댓글 달아주..

Web/Spring 2022.10.18

(번역)넷플릭스의 Zuul 2 도입기를 통해 보는 Non blocking의 장단점, blocking 쉬운 설명

🚀들어가며 최근 reactive programming을 배우면서 넌블러킹이 시스템의 성능에 어떤 때에 도움이 되고, 어떤 때 도움이 되지 않는지 자세하게 알고 싶어졌다. 특히 MSA 애플리케이션의 경우 유용하게 사용된다는 이야기를 듣고 나니 문득 궁금해졌다. 통신에 있어서도 나름의 순서와 처리로직이 있을 것인데, 단순히 async, non blocking 방식으로 구현한다고 해서 그렇게 효과가 좋을까? 관련 키워드로 검색을 하다 넷플릭스의 Zuul 2 도입기를 읽게 되었고, 마침 최근 공부하던 운영체제와 관련된 내용이 나와 정리 겸 번역 및 요약해보았다. 넷플릭스처럼 소비 트래픽이 굉장히 큰 회사에서는 왜 비동기-논블로킹 프레임워크를 차용했고, 그 효과는 어땠을까? 그로부터 배울 점은 무엇일까? 천천히 ..

Web/Spring 2022.10.15

DTO란? DTO 정적 이너 클래스로 만드는 이유(캡슐화, 속도)

🚩들어가며 DTO를 프로젝트에서 사용해보면서, 쉴새없이 늘어나는 파일 개수에 당황했다. 하나의 요청을 처리하기 위해 2개씩 만들어야 하니 당연한 일이었다. 어떻게 해야 객체지향적으로, 코드 가독성을 높이며 처리할 수 있을지 찾아보니 정적 이너 클래스로 관리한다고 하기에 DTO 내용부터 차근차근 정리해보려 한다. DTO란? DTO=data transfer object DTO가 필요한 이유 http요청 축소 기존에는 요청을 다 받고, 이후에 컨트롤러에서 필터링하는 방식이었다 데이터 유효성 검증 단순화 데이터 유효성 처리를 api마다 다 다르게 설정해야 할 때가 많으므로 애초에 DTO로 처리해버린다 요청 데이터 객체 단순화 request parameter 수를 줄일 수 있게 된다 도메인 객체와 분리 객체 정보..

Web/Spring 2022.10.12

세션 vs 토큰, JWT 구조와 취약점

🚀들어가며 프로젝트에서 성적 정보 등을 다루다 보니 페이지 조회 권한을 어떻게 설정할 것인지, 우리가 채택한 시큐리티 방식에는 어떤 장단점이 있는지 고민하게 됐다. 사용자 경험을 중시하는 서비스의 경우 주로 토큰 방식을 쓰는 것 같지만, 애매한 민감정보(?)를 다루는 경우 어떤 식으로 현업에서는 대책을 내고 있는지도 궁금해졌다. 그중에서도 우선은 최근 가장 보편적으로 쓰이는 토큰 방식인 JWT에 대해 정리해보려 한다. 1. JWT란? Json Web Token JSON포맷 토큰 정보 인코딩→ Secret Key로 서명한 메세지→Web Token으로 활용 2. JWT 종류 2.1. Access Token 보호된 정보 접근용 권한 부여 보호된 정보: 사용자 이메일, 연락처, 사진 등 로그인 시 access,..

Web/Spring 2022.10.11

[divide two integers] solution (using bit operator) 비트연산자 활용한 이진수의 나눗셈

https://leetcode.com/problems/divide-two-integers/description/ Divide Two Integers - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 리트코드의 나눗셈 구현문제를 풀어봤다. 상당히 졸린 관계로 자세한 풀이는 추후에 수정하고 이진법의 나눗셈 원리를 이해할 수 있도록 정리한 필기를 공유해본다. 나눗셈이 뺄셈의 고차원적 표현이라는 건 모두가 알고 있겠지만 count++만 하기에는 인생이 너무 짧다 고대 ..

Web/Spring 2022.09.01
728x90
반응형