Server Programming/SpringBoot
AOP ,Transaction
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에서는 별도의 설정이 필요없으며, 클래스 또는 메소드에 선언할 수 있음
반응형