개발/기능 개발2023. 5. 29. 20:31[Spring] Filter & Interceptor & AOP

실행 순서:Filter → Interceptor → AOP → Interceptor → Filter 필터의 특징Filter는 WAS단에 위치하고 있어 spring 자원이 아니다.doFilter() 메소드를 이용해 요청, 응답에 대해 동작한다.Request, Response 객체에 관여할 수 있다. 스프링의 예외 처리가 되지않는다.적용Servlet Request, Responsespring과 분리되어야 하는 기능이미지/데이터 압축 및 문자열 인코딩모든 요청에 대한 로깅공통된 보안 및 인증/인가   인터셉터의 특징spring 컨테이너에 있는 spring 자원이다.preHandler(), postHandler()를 이용해서 요청과 응답에 대한 처리가 분리되어있다.Request, Response 객체에 관여할 ..

개발/기능 개발2023. 5. 24. 10:04[Spring] IoC & DI

IoC (Inversion of Control) 제어의 역전이라는 뜻으로 기존의 자바에서는 제어권이 개발자에게 있었지만, 스프링에서는 제어권이 스프링에게 있다는 뜻이다. 제어권이 스프링에게 있다는 것이 무슨 뜻인가?사용자가 직접 new를 사용해서 인스턴스를 생성하는 것이 아니라 스프링이 알아서 인스턴스를 생성해준다는 뜻이다. 어떻게 스프링이 인스턴스를 생성할 수 있지?스프링에는 IoC Container라는 것이 있다.IoC Container를 이용해서 Bean을 관리하고 DI를 수행할 수 있다. IoC Container (= Spring container)란?Spring container는 ApplicationContext 인터페이스의 구현체이다.ApplicationContext는 최상위 인터페이스인 B..

개발/기능 개발2023. 4. 19. 23:01[인증] JWT(JSON Web Token)

JWT란?JSON 객체로 안전하게 정보를 전송하기 위한 방식디지털 서명이 되어있기 때문에 안전하다. JWT 구조JWT는 Header, Payload, Signature 3가지를 점으로 구분하여  xxxx.yyyy.zzzz 구조를 가지고 있다.Header와 Payload는 base64로 인코딩 되어있고, signature는 Header, Payload, Secret key를 HS256 방식으로 암호화한 다음 base64로 인코딩 되어있다. Header: 알고리즘, 타입 => "HS256으로 암호화 한 JWT이다"라는 정보가 들어있다.Payload: 정보 => name, userId 등등Signature: [헤더, 페이로드, 비밀 키]를 헤더에 있는 알고리즘으로 암호화 암호화HMAC SHA256 또는 RSA..

개발/기능 개발2023. 4. 11. 23:39[Spring] Rest Docs와 Swagger UI

기존 Swagger 사용의 단점비즈니스 로직에 문서화 코드가 들어가야한다.검증과정을 거치지 않았기 때문에 불안정하다.MSA와 같이 분산된 서비스에서  각각의 문서가 전부 다른 주소를 갖기 때문에 일일이 찾아봐야한다. 해결 방안Rest Docs를 통해 테스트 코드에서 문서화 코드를 작성하여, 프로덕션 코드와 분리하고 검증된 문서 생성Rest Docs에 의해 생성된 open api spec 추출하여 Swagger UI로 api spec을 보내 마이크로서비스들의 API 문서 통합 적용Rest Docs Gradle 의존성 & 빌드 스크립트 추가//(1)plugins { id "org.asciidoctor.jvm.convert" version "3.3.2"}//(2)configurations { asciidoct..

image