본문 바로가기

프레임워크/Spring boot

(28)
Spring 주절주절(지속적 업데이트) 오늘은 Spring에 대해 알고 있는 내용들을 주절주절 써보려고 한다. Spring의 특징 환경 스프링이랑 뭘까? 스프링의 환경이란 뭘까? 스프링이란 왜 필요할까? 주어진 모든 상황에 왜 라는 물음을 던지며 시작하려 한다. 왜 Spring boot를 쓸까? spring boot를 사용하며, 왜 spring boot를 쓸까? 아니 모든 내가 사용하는 모든 것들에 대해서 왜 쓸까 라는 물음을 가져야 해야 한다고 생각한다. 언제나 당연한건 없다고 생각하기 때문이다. 왜 쓸까? 내가 생각했을때, 스프링 부트를 사용하는 원인은 5가지이다. Java라는 언어 비교적 사용하기 쉬운 프레임워크 IOC / DI로 이어지는 스피링의 특징(객체지향적) 풍부한 생태계 멀티 쓰레드 환경( 동반되는... 동시성 문제... ) J..
throws시 어떤 일이 발생될것인가 ? 가정 서비스 내에서 Throws를 발생시킨다. 그 Throws를 잡는 Controller @ExceptionHandler가 존재한다. 이제 내가 한 코드를 예를 들어서 설명해보겠다. 과정 Proxy객체의 throw ex.getTargetException() 함수를 호출한다. Dispatcher Servlet객체까지 올라가 processDispatchResult() 함수를 호출한다. Handler Exception을 처리하기 위한 processHandlerException()을 호출한다. resolver의 resolveException()을 호출한다. handlerExceptionResolver가 resolveException()함수를 호출한다. exceptionHandlerMethod.invokeAndH..
Spring Validation과 JsonSerializer<Errors> 목적 스프링은 비즈니스 로직에만 집중할수 있도록 애플리케이션 전 계층에서 도메인 객체를 검증할수 있는 인터페이스를 제공한다. Validator Interface Spring은 도메인 객체를 검증할 수 있도록 Validator 인터페이스를 도입했다. Validator 인터페이스는 객체를 검증하는데 실패하면 Errors 객체에 에러를 등록함으로써 동작한다. 예시 supports(Class): 매개변수로 전달된 클래스를 검증할 수 있는지 여부를 반환 validate(Object, org.springframework.validation.Errors): 매개변수로 전달된 객체를 검증하고 실패하면 Errors 객체에 에러를 등록한다. validator의 validate함수에서 reject 함수를 호출하면 Bindi..
Spring hateoas Spring Hateoas란? HATEOAS는Hypermedia As The Engine Of Application State의 약자로 서버가 클라이언트에게 하이퍼 미디어를 통해 정보를 동적으로 제공해주는 것입니다. API에서 리소스에 대한 어떤 행동을 할수 있는지 URL을 통해 전달하여 클라이언트가 참고하여 사용할수 있도록 합니다. 예를 들면, 리스트를 전달할때 각 리스트안에 요소에 self_url을 전달하여 보내는 것입니다. 이러한 메시지를 표현하기 위해서 헤더의 Content Type을 application/hal_json으로 전달하면 클라이언트에서는 _link필드에 링크정보가 있다고 예상할수 있습니다. 예시 사용법 의존성 추가하기 org.springframework.boot spring-boot-..
예외 처리 @ControllerAdvice Controller를 작성할 때는 메서드의 모든 예외사항을 전부 핸들링해야 한다면 중복적이고 많은양의 코드를 작성해야 하지만, AOP 방식을 이용하면 공통적인 예외사항에 대해서는 별도로 @ControllerAdvice를 이용해서 분리하는 방식입니다.
2. IOC, DI Spring Boot탐구(2)
Spring Aop Aop란? AOP(Aspect Oriented Programing)는 관점지향형 프로그래밍이다. 이는 반복 사용되는 로직들을 모듈화 하여 필요할때 호출해서 사용하는 방법이다. 즉 횡단 관심사(Cross-Cutting Concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. * Proxy는 중개인을 뜻하는 영단어로써, 업무처리를 대신한다는 개념이다. 구체적인 예시를 통해 알아보자. public interface ControllerContainer { public void controller1(int[] arr); public void controller2(int[] arr); } public static class ControllerFactory implements C..
JWT란 ? Auithorization 인가(Authorization)는 요청을 보낸 유저가 그 서비스를 사용할 수 있는 유저인지를 확인하는 절차이다. 인가 = Can you do that? 을 확인하는 과정 서버는 그 유저를 어떻게 확인할까? Authorization 절차는 다음과 같다. 서버에 로그인을 성공한 유저는 인증을 받았다는 표시로 그 서버가 발행한 토큰을 발급받는다. 보통 이 토큰을 access token 이라고 한다. 이 token에는 user id와 같이 아주 중요한 정보가 아니면서도(예를 들어 주민등록번호 같은) 유저를 확실하게 구분할 수 있는 정보가 있어야 한다. 인증을 받은 유저는 request를 보낼 때 request header에 보통 'Authorization' 라는 이름으로 token 정..