일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 데일리
- 권한부여
- 횡단관심사
- 평가용
- 책추천
- JSP
- MySQL
- 데이로그
- 도전로그
- 2챕터독서
- 종단관심사
- 자기계발
- requestparameter
- diario
- 데이터베이스생성
- 테이블생성
- onlyfullgroupby
- 노스마트폰챌린지
- 첫줄
- daily
- InteliJ
- final변수
- 요청파라미터
- 생크림활용기
- 소트라테스익스프레스
- 복습!
- 내장객체영역
- 스프링
- tㅐ
- 일상
- Today
- Total
Emma.log()
AOP 2. Around Advice, 기타 AOP 기능 본문
※ 어드바이스 : 횡단관심사의 구현체인 메소드를 의미한다. 어드바이스를 정리한 클래스 내에 기술되는것
Around Advice가 다른 어드바이스와 다른점
1) 인수는 ProceddingJoinPoint 인터페이스 타입을 지정한다.
2) 어드바이스 중에서 ProceddingJoinPoint인터페이스의 proceed() 메소드를 호출한다.
3) 어드바이스 적용대상의 메소드를 임의의 타이밍으로 호출할수 있으므로 전후로 다양한 처리가 가능하다.
4) 반환값을 돌려줄 필요가 있는경우, Object 타입으로 반환값을 돌려준다.
프록시란
프록시는 기존 코드를 수정하지않고 코드 중복을 피할수 있는 방법
1) 핵심기능의 실행은 다른 객체에 위임하고 부가적인기능을 제공하는 객체 = 프록시(proxy)
2) 실제 핵심기능을 실행하는 객체 = 대상객체
3) 프록시는 핵심기능을 구현하지않는다.
4) 대신 여러 객체에 공통으로 적용할 수 있는 기능을 구현한다.
AOP 는 여러 객체에 공통으로 적용할 수 있는 기능을 분리해 재사용성을 높여주는 기법
1) 공통기능구현과 핵심 기능 구현의 분리
2) 핵심기능에 공통기능을 삽입
→ 컴파일 시점에 코드에 공통 기능을 삽입
→ 클래스 로딩시점에 바이트코드에 공통기능을 삽입
→ 런타임에 프록시 객체를 생성해서 공통기능을 삽입
■ 이중 스프링에서 제공하는 AOP 방식은 프록시를 이용한 방식이다.
스프링AOP 는 프록시 객체를 자동으로 생성해준다.
AOP 공통기능을 Aspect라 칭한다.
AOP 가 아직 낯설어서 다시 정리해보았다.
참고 : https://owin2828.github.io/devlog/2019/12/30/spring-7.html
스프링프레임워크가 제공하는 AOP 기능
스프링에선 여러 공통기능을 AOP 로 제공한다.
제공된기능은 어노테이션을 클래스나 메소드에 부여해 사용할수있다.
@Transactional 어노테이션을 부여해 트랜잭션을 관리할수도 있다.
보통 트랜잭션 관리할때 부여해서 사용하는데 데이터베이스 액세스 처리 메소드가 정상종료하면 트랜잭션을 커밋하고, 예외가 발생하면 롤백한다.
스프링에서는 트랜잭션을 제어하는 트랜잭션 어드바이스를 제공하고, @Transactional어노테이션을 이용한다. 그럼 AOP 프록시가 처리한다.
AOP 의 주요사항
1) AOP 에서는 프로그램을 종단관심사, 횡단관심사로 구성된다고 생각
2) 종단관심사 : 구현할 기능을 의미하는 비지니스로직
3) 횡단관심사 : 중심적 기능은 아닌데, 품질, 유지보수, 퍼포먼스 등 관점에서 필요한 기능을 나타내는 프로그램을 의미한다.
4) AOP 에선 횡단관심사를 분리해 기존코드를 수정하지 않고도 프로그램중에 특정기능(공통처리)를 추가할수있다.
5) 스프링프레임웤은 다양한 공통기능을 AOP 에서 제공한다.
참고 : 스프링프레임워크 첫걸음 -위키북스-
'Back-End > Spring' 카테고리의 다른 글
Spring Data JDBC (1) | 2022.10.05 |
---|---|
Entity, Repository (1) | 2022.10.05 |
AOP(관점지향프로그래밍) (2) | 2022.10.04 |
어노테이션 (2) | 2022.10.04 |
DI 의존성주입 (0) | 2022.10.04 |