Dev.BeryL 2022. 1. 25. 18:50
728x90

AOP (Aspect Oriented Programming)

  • 관점지향 프로그래밍이라고 불린다.
  • 어떤 로직을 기준으로 핵심관점, 부가관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하는 의미
  • 여러 곳에서 사용되는 중복되는 코드를 떼어내서 분리한다. -> 중복되는 코드 = aspect
  • aspect로 모듈화 하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 취지로 사용

AOP 주요 개념

  • Aspect : 중복되는 코드(모듈화 한것), 주로 부가기능
  • Target : Aspect를 적용할 곳 (클래스, 메서드 etc..)
  • Advice : 실직적인 부가기능을 담은 구현체
  • JoinPoint : Advice가 적용될 위치, 다양한 시점에 적용이 가능
  • PointCut : JoinPoint의 상세한 스펙을 정의

AOP 의 특징

  • 프록시 패턴 기반의 AOP 구현체, 프록시 객체를 쓰는 이유 -> 접근 제어 및 부가 기능 추가
  • Spring bean에만 AOP 적용 가능
  • 스프링 IoC와 연동해 중복코드, 객체들 간 관계복잡도 증가 등에 대한 해결책을 지원이 목적

 

AOP 사용법

AOP를 사용하기 위해 xml 파일에서 DI(의존성 주입)가 필요하다.

  • @Aspect 어노테이션을 붙여 해당 클래스가 Aspect를 나타내는 클래스임을 명시
  • @Componet를 붙여 스프링 빈으로 등록한다.
  • @Around 로 Target method를 감싸 특정 Advice를 실행한다.

 

실행 후 결과

 

Transaction

  • 데이터베이스의 상태를 변경시키는 작업 또는 한번에 수행되어야 하는 연산들
  • 트랜잭션 작업 종료시 Commit 혹은 Rollback 되어야 함
  • 하나의 작업에 여러 개의 작업이 같이 묶여 있는 것

Transaction 의 기본 원칙 (ACID)

  • 원자성(Atomicity) : 하나의 트랜잭션은 모두 하나의 작업 단위로 처리 하나라도 실패할 경우 모두 처음 상태로 돌아가야만 한다.
  • 일관성(Consistency) : 트랜잭션이 성공했다면 데이터베이스의 모든 데이터는 일관성을 유지해야 한다.
  • 고립성(독립성)(Isolation) : 트랜잭션은 독립적으로 처리되며, 처리되는 중간에 외부에서의 간섭은 없어야 한다.
  • 지속성(Durability) : 트랜잭션은 독립적으로 처리되면 그 결과는 지속적으로 유지

Transaction 사용법

  • @Transactional 어노테이션을 사용
  • Spring에서 지원하는 선언적 트랜잭션이며, xml 또는 Javaconfig를 통해 설정이 가능 하다.
  • Spring boot에서는 별도의 설정이 필요없으며, 클래스 또는 메소드에 선언할 수 있음

 

반응형