AOP: 8개의 글
자바 웹프로그래밍을 구현하다보면 공통적인 업무를 추가해야할 것들이 많다. 공통적인 업무에는 로그인처리(세션체크), pc웹과 모바일웹의 분기, 로그 확인, 페이지 인코딩 변환, 권한체크, XSS(Cross site script)방어 등이 있는데 이러한 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 업무량이 상당히 증가할 것이다. 이러한 공통업무를 프로그램 흐름에서 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법이 있는데 서블릿에서 지원하는 서블릿 필터, 스프링 프레임워크를 사용하면 쓸 수 있는 인터셉터, AOP가 있다. 앞서 AOP개념을 정리할 때 언급한 것처럼 개발자는 좀더 핵심로직에 집중하고, 부가로직으로부터 자유로워지게 도와주는 역할을 한다. 그렇다면..
1. AOP란? Aspect Oriented Programming 의 약자로 관점지향 프로그래밍이라고 부른다. IoC가 낮은 결합도와 관련된 것이라면 AOP 는 높은 응집도와 관련되어 있다. 서비스들의 비즈니스 메소드들은 복잡한 코드로 구성되어있는데, 그 중 핵심 로직은 얼마안되고 대부분은 트랜잭션, 로깅 처리, 인증과 관련된 코드들이 있을 수 있다. 이럴 때 비핵심이지만 꼭 필요하고, 공통화할 수 있는 부분을 따로 빼서(횡단 분리) 관리하는 것이다. 2. AOP 용어 조인포인트(Joinpoint) : 클라이언트가 호출하는 모든 비즈니스 메소드, 조인포인트 중에서 포인트컷되기 때문에 포인트컷의 후보로 생각할 수 있다. 포인트컷(Pointcut) : 특정 조건에 의해 필터링된 조인포인트, 수많은 조인포인트..
AspectJ Weaver를 사용한 애노테이션 기반의 스프링 AOP 구현 방법 AOP란? - Aspect Oriented Programming : 관점 지향 프로그래밍 - OOP 와 분리된 개념이 아니라, OOP에 기초를 두는 프로그래밍 방식 - 하나의 프로그램을 관점(혹은 관심사)라는 논리적인 단위로 분리하여 관리하는 개념 - 로깅, 감사, 선언적 트랜젝션, 보안, 캐싱 등 다양한 곳에서 사용된다. AOP 용어 - Joint Point : 모듈이 삽입되어 동작하게 되는 특정 위치(메서드 호출 등) - Point Cut : 다양한 Joint Point 중에 어떤 것을 사용할지 선택 - Advice : Joint Point에 삽입되어 동작할 수 있는 코드 - Weaving : Advice를 핵심 로직 코드..
AspectJ Weaver를 사용한 XML 기반의 스프링 AOP 구현 방법 AOP란? - Aspect Oriented Programming : 관점 지향 프로그래밍 - OOP 와 분리된 개념이 아니라, OOP에 기초를 두는 프로그래밍 방식 - 하나의 프로그램을 관점(혹은 관심사)라는 논리적인 단위로 분리하여 관리하는 개념 - 로깅, 감사, 선언적 트랜젝션, 보안, 캐싱 등 다양한 곳에서 사용된다. AOP 용어 - Joint Point : 모듈이 삽입되어 동작하게 되는 특정 위치(메서드 호출 등) - Point Cut : 다양한 Joint Point 중에 어떤 것을 사용할지 선택 - Advice : Joint Point에 삽입되어 동작할 수 있는 코드 - Weaving : Advice를 핵심 로직 코드에 ..
1. 다양한 intercept 방법들과 주 사용처 Servlet Filter : 인코딩, 인증, 압축, 변환 등 HandlerInterceptor : 세션, 쿠키, 검증 등 AOP : 비즈니스단 로깅, 트랜잭션, 에러처리 등 2. Servlet Filter 와 HandlerInterceptor 차이 Servlet Filter : Dispatcher Servlet의 앞단에서 들어오는 요청을 처리 J2EE 스펙 spring과 무관 HandlerInterceptor : Dispatcher Servlet의 뒤의 Handler 영역에서 요청을 처리 org.springframework.web.servlet.handler 패키지가 제공 흐름 정리 : Request -> Servlet Filter -> Dispatch..
1. AOP란? Aspect Oriented Programming 의 약자로 관점지향 프로그래밍이라고 부른다. IoC가 낮은 결합도와 관련된 것이라면 AOP 는 높은 응집도와 관련되어 있다. 서비스들의 비즈니스 메소드들은 복잡한 코드로 구성되어있는데, 그 중 핵심 로직은 얼마안되고 대부분은 트랜잭션, 로깅 처리, 인증과 관련된 코드들이 있을 수 있다. 이럴 때 비핵심이지만 꼭 필요하고, 공통화할 수 있는 부분을 따로 빼서(횡단 분리) 관리하는 것이다. 2. AOP 용어 조인포인트(Joinpoint) : 클라이언트가 호출하는 모든 비즈니스 메소드, 조인포인트 중에서 포인트컷되기 때문에 포인트컷의 후보로 생각할 수 있다. 포인트컷(Pointcut) : 특정 조건에 의해 필터링된 조인포인트, 수많은 조인포인트..
AOP 개요 Aspect Oriented Programming, 줄여서 AOP는 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법을 말한다. AOP는 문제를 해결하기 위한 핵심 관심 사항과 전제에 적용되는 공통 관심 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용할 수 있도록 도와 준다. AOP를 구현하는 다양한 방법이 존재하지만, 기본적인 개념은 공통 관심 사항을 구현한 코드를 핵심 로직을 구현한 코드 안에 삽입한다는 것이다. AOP 기법에서는 핵심 로직을 구현한 코드에서 공통 기능을 직접적으로 호출하지 않는다. 핵심 로직을 구현한 코드를 컴파일 하거나, 컴파일 된 클래스를 로딩하거나, 또는 로딩한 클래스의 객체를 생성할 때 AOP가 적용되어 핵심 로직 구현 코드 안에 공통 기..
AOP 용어 설명 1. Advice언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의하고 있다. 예를 들어, '메서드를 호출하기 전'(언제)에 '트랜잭션을 시작한다.'(공통기능)기능을 적용한다는 것을 정의하고 있다.Target 클래스에 조인 포인트에 삽입되어져 동작(적용할 기능)할 수 있는 코드를 '어드바이스'라 한다.관점으로서 분리되고 실행시 모듈에 위빙된 구체적인 처리를 AOP에서는 Advice라고 한다. Advice를 어디에서 위빙하는지는 뒤에 나오는 PointCut이라는 단위로 정의한다.또한 Advice가 위빙되는 인스턴스를 '대상객체'라고 한다.advice는 Pointcut에서 지정한 Jointpoint에서 실행되어야하는 코드이다. cp.) 스프링의 Advice 타입- Around Advice..