Browse Tag: aop

[Java]AOP

Aspect-Oriented Programming

객체 지향 프로그래밍(OOP)로 개발 하다보니 단점이 발견되었다. 분산된 중복 소스 , 소스간 의존성 증가 등등.

이런 문제를 해결하기 위해 등장한것이 AOP.

“Aspect” 란 로깅 , 보안, 트렌젝션 같은 비지니스 로직 사이에 공통으로 존재하는 “관심사”들이다.  이런 부분들이 객체지향프로그래밍에서는 전체 어플리케이션에서 중구난방으로 등장(횡단 관심사)해서 정리가 안되니 이런 부분을 따로 때서 개발하자 라는 것이다.

결국 객체지향 프로그래밍을 중심으로 거기서 발견된 문제를 관심사 분리를 통해 해결하자 라는 것이 AOP

AOP의 Aspect를 구현하기 위해서는 Advice(무엇을 해야하는가) point cut(어디서 해야하는가)를 정의해야한다. 정의된 것을 weaving(point cut 지점에 Advice를 삽입)한다.

일련의 작업을 통해 공통의 관심사를 분리하고 이로 중복 코드를 제거하여 유지보수에 큰 이점을 가질 수 있게 된다.

글로만 쓰면 무슨말인지 잘 모르니, Spring에서 구현된 AOP의 실전 예제를 통해 이해해보자.

Spring에서 AOP를 구현하기위한 방법은 여러가지인데 어노테이션(AspectJ)를 이용한 방법을 사용해보자

 

Interface로 정의되고 Spring Bean으로 등록된 객체만이 Aspect가 실행되는 대상이된다.

해당 문법(@Before , @After 등)에 대해서는 AspectJ 문법을 찾아 사용하면 될것 같다.

[Java]자바 용어

자바 용어에 대해 명확히 하고 넘어 가기 위해 정리한다.

#POJO 클래스 – 프레임워크에 의존(상속)하지 클래스. 프레임워크가 빠진 순수 자바 클래스.

#AOP – 객체지향 프로그래밍의 단점을 보완하기 위한 관심사(aspect) 중심의 프로그래밍

#JPA – 관계형 데이터베이스에 접근하기 위한 표준 ORM(Object-relational mapping)

#Java 8 – Java version 8

JTA – 데이터베이스를 이용할 경우 트랜잭션을 제어하기 위한 기술 ( J2EE 스팩 )

JMS – 메시징 시스템은 응용프로그램 간에 비동기적으로 메시지를 교환할 수 있는 기술 (J2EE 스팩)