AOP(Aspect Oriented Programming)
관점 지향 프로그램이라고 불린다. 관점지향은 쉽게 어떤 로직을 기준으로 핵심적인 관저므 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.
그림처럼 흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이다.
AOP 주요 개념
Aspect : 흩어진 관심사를 모듈화 한 것이고 주로 부가기능을 모듈화한다.
Target : Aspect를 적용하는 곳(클래스, 메서드...)
Advice : 실질적으로 어떤 일을 해야할 지에 대한 것, 실질적인 부가기능을 담은 구현체
JointPonit : Advice가 적용될 위치, 끼어들 수 있는 지점, 메서드 진입지점, 생성자 호출 시점, 필드에서 값을 꺼내올 때 등 다양한 시점에 적용가능
PointCut : JointPoint의 상세한 스펙을 정의한 것
AOP에 대표적인 것으로 @Transcational이 있다.
TrasactionManager를 사용할 경우 코드
PlatFormTransactionManager tm = new DataSourceTransactionManager(ds);
TransactionStatus status = tm.getTransaction(new DefaultTransactionDefinition());
//위에 공통기능
try{
dao.insert(1); /*
dao.insert(2); * 핵심기능
dao.insert(3); */
//아래 공통기능
tm.commit(status);
}catch(Exception e){
tm.rollback(status);
}
이런식으로 핵심기능을 제외한 공통기능 부분은 똑같이 작성해야 할 일이 많이 생긴다 이 공통 기능을 모듈화하여 @Transactional로 지정하고 핵심기능에 집중할 수 있도록 되었다.
그리고 Tm으로 묶이는 코드는 같은 Connection으로 DB에 접근한다.(다른 Connection을 사용하지 않음)
@Transactional
public void save(){
dao.insert(1);
dao.insert(2);
dao.insert(3);
}
참고
https://engkimbs.tistory.com/746
'Spring' 카테고리의 다른 글
Spring - DispatcherServlet (0) | 2023.02.24 |
---|---|
Spring - 작성자 체크하기 (0) | 2023.02.09 |
Spring - Session (0) | 2022.12.26 |
Spring - Cookie (0) | 2022.12.23 |
Spring - 파일 올리기(이미지 저장하기 ) - RestController (1) | 2022.10.11 |