11월, 2018의 게시물 표시

Spring Interceptor에 대하여

이미지
Spring interceptor Spring Interceptor   소개 이번 포스팅은 Spring MVC HandlerInterceptor 를 이해하고 올바르게 사용하는 법을 알아 볼 것이다.   Spring MVC Handler 인터셉터를 이해하기 위해서는 HandlerMapping 을 잘 알아야한다. HandlerMapping 는 URL에 관련된 메소드인데, DispatchServlet 이 요청을 처리할 때 호출 할 수 있는 메소드이다. 그리고 DispatcherServlet 는 실제 메소드를 호출하기 위해서 HandlerAdapter 를 사용한다. 이제 전반적인 context 설정파일을 이해해보자. 요청을 처리하기 전이나,후 처리를 완료하기전 (view단이 렌더링 될때) 어떠한 동작을 수행하기 위해 HandlerInterceptor 를 이용하게 된다. 인터셉터는 중복되는 관심 또는 반복되는 핸들러 코드 (예를 들어 로깅작업)을 처리하기위해 사용된다.   Maven Dependency 인터셉터를 사용하기 위해서는 pom.xml에 라이브러리를 추가해줘야한다 x < dependency >     < groupId > org.springframework </ groupId >     < artifactId > spring-web </ artifactId >     < version > 5.0.6.RELEASE </ version > </ dependency >   Spring Handler Interceptor 프레임워크에서 HandlerMapping 과 같이쓰는 인터셉터들은 반드시 HandlerInterceptor 인터페이스를 구현해야한다. HandlerInterceptor 는 3가지 메인 메소드가 있다 : prehandle() : 실제 핸들러가 실행되기전에 호출된다, 그러나 view는 아직 생성되지 않음. postHandle()

AOP에 관하여

이미지
AOP AOP Spring의 핵심 개념중 하나인 DI가 애플리케이션 모듈들 간의 결합도를 낮춰준다면, AOP는 메소드를 만들어 그 메소드를 재사용하도록 도와주는 기법이다. AOP (Aspect-Oriented Programming) 란 단어를 번역하면 관점 지향 프로그래밍이다. 보통 제 3자의 관점에서 바라본다라고 얘기한다. BoardClass 에 있는 getBoardList() 함수와 getBoardreply() 함수를 호출했을 때, 공통적으로 호출해야할 기능들이 있다고 해보자. 그럼 AOP(제3자)가 자동적으로 확인하고 공통기능들을 호출할 것이다. AOP의 용어 타깃 타깃은 부가기능을 부여할 대상이다. 핵심기능을 담은 클래스일 수도 있지만 경우에 따라서는 다른 부가기능을 제공하는 프록시 오브젝트일 수도 있다. 어드바이스 어드바이스는 타깃에게 제공할 부가기능을 담은 모듈이다. 어드바이스는 오브젝트로 정의하기도 하지만 메소드 레벨에서 정의할 수도 있다. 어드바이스는 여러 종류가 있다. MethodInterceptor처럼 메소드 호출 과정에 전반적으로 참여하는 것도 있지만, 예외가 발생했을 때만 동작하는 어드바이스처럼 메소드 호출 과정의 일부에서만 동작하는 어드바이스도 있다. 조인 포인트 조인포인트란 어드바이스가 적용될 수 있는 위치를 말한다. 스프링의 프록시 AOP에서 조인 포인트는 메소드의 시행 단계뿐이다. 타깃 오브젝트가 구현한 인터페이스의 모든 메소드는 조인 포인트가 된다. 포인트컷 포인트컷이란 어드바이스를 적용할 조인 포인트를 선별하는 작업 또는 그 기능을 정의한 모듈을 말한다. 스프링 AOP의 조인 포인트는 메소드의 실행이므로 스프링의 포인트컷은 메소드를 선정하는 기능을 갖고 있다. 그래서 포인트컷 표현식은 메소드