TIL - doFilter 메소드에 대해서 개발하면서 매우 궁금했던 게 바로 chain.doFilter(request, response); 메소드였다. JwtAuthorizationFilter에 존재하는 이 doFilter는 도대체 무엇을 하는 애일까? 내 첫 번째 TIL에서 공부했던 게 바로 doFilter 안의 인자로 들어가는 HttpServletRequest request와 HttpServletResponse response였는데, 얘들은 일종의 요청과 응답을 나타내는 객체라는 것을 알게되었다. 그러나 이제 궁금한 점은 그렇다면 요청과 응답을 동시에 가지고 있는 doFilter 메소드는 무엇을 하는 것 인지였다. oracle에 따르면, 필터는 리소스(서블릿 또는 정적 콘텐츠)에 대한 요청이나 리소스..
분류 전체보기
Spring Bean Life Cycle에 대해서 Spring에서 빈이 만들어지고, DI로 사용된다는 것은 알고 있었다. 그런데 전체적으로 Spring Bean Life Cycle에 대해서는 잘 모르는 것 같아서 이번에 새롭게 정리해보려고 한다. 간단하게 정리하자면, bean은 다음과 같은 라이프 사이클을 거친다. 스프링 컨테이너 시작 -> 스프링 빈 초기화 -> 의존관계 주입(DI) -> init() -> 유틸리티 -> destory() -> 스프링 종료라는 라이프 사이클을 거치는데, 더 디테일한 전체 flow는 다음과 같다. 패키지 스캐닝이 있는 어노테이션(@Bean, @Controller, @RestController, @Service, @Repository, @Component)이나 XML 등으로..
스프링 서블릿(Servlet)에 대해 Spring Boot로 코드를 짜다가 어느 날 든 생각. 도대체 HttpServletRequest request와 HttpServletResponse response가 무엇일까? 그동안 막연하게 request와 response일 것이라고 생각하고 있었지, 정작 이 중간에 있는 단어, Servlet 이 무엇인지에 대해서는 별로 관심이 없었다. 조사해 보니, Spring MVC는 중앙 Servlet인 DispatcherServlet를 중심으로 디자인되었다고 한다. DispatcherServlet는 사용자의 요청을 처리하기 위한 shared algorithm를 제공한다. DispatcherServlet은 Spring 기반 웹 애플리케이션의 Front Controller 역..
M3 Max의 변화 애플이 실리콘 라인업을 재구축 중이다. M3 Max에는 더 이상 UltraFusion interconnect가 존재하지 않는다고 한다. UltraFusion interconnect는 여러 개의 칩 다이(낱개로 잘려진 칩)를 결합하는 애플만의 패키징 방식으로, 기존에 M1 Ultra를 만들 때 M1 Max 칩 다이 두 개를 UltraFusion 패키징으로 결합해 강력한 시스템 온 칩(SoC, System on Chip)를 만들 수 있었다. 이 방식은 M2 Ultra 칩을 만들 때도 M2 Max 칩 다이 두 개를 결합하는 식으로 활용되었다. 참고로 위의 사진에서 칩의 맨 아랫 부분에 보이는 실리콘 인터포저가 바로 UltraFusion이다. 어떻게 두 개의 칩이 연결되는지 간단하게 알고 싶..
커스텀 어노테이션이 필요한 상황 지금 구현하고 있는 프로젝트에서는 거의 대부분의 기능을 소셜 로그인 후 사용 가능하다. 따라서 거의 모든 API에서 JWT 토큰 인증 후 토큰에 있는 정보를 가지고 member의 정보(id, email 등등)을 추출하는 로직이 필요한데, 이를 컨트롤러에서 중복되는 코드를 계속 작성하기에는 너무 지저분하기도 하고, 깔끔하게 어노테이션 하나로 선언적으로 표현하고 싶어서 커스텀 어노테이션인 @AuthUser를 만들기로 했다. @AuthUser 어노테이션 @AuthUser는 여러 도메인에서 글로벌하게 사용할 어노테이션이므로, ./global/auth 아래에 만들어 주었다. 코드는 아래와 같다. (참고로 interface 앞의 @는 오타가 아니라, 어노테이션 타입이라는 뜻이다.) ..