-
[ Spring ] 3. 스프링 AOP 관점 지향 프로그래밍 (필터?)스타터스 백엔드 3기 2023. 1. 12. 15:35
하루입니다.
관점 지향 프로그래밍(AOP, Aspect Oriented Programming)의 개요
메서드 안의 주기능과 보조기능을 분리 후 선택적으로 메서드에 적용해서 사용한다는 개념이다.
전체 보조 코드를 한 군데에 모아 관리할 수 있다.
보조 기능을 원하는 주기능에 선택적으로 적용할 수 있어 코드가 단순해지고 가독성도 향상된다.
예시
Member 클래스
login ( )
소요시간 측정 ( )
로그인 핵심 처리 ( )
insert ( )
db 연결 / 해제서블릿의 필터
톰캣에서 제공되기에 서블릿/jsp에서만 사용 가능하다.
요청 처리 전 인코딩 해야 한다
처리에서 응답까지 소요시간 측정한다
예외처리 한다
공통 관심 처리 : 모든 자바 클래스가 공통으로 실행해야 하는 내용 (횡단관심)
: 별도 클래스로 선언한다.
- 소요시간 측정
- 예외처리
- db 연결 / 해제
핵심 관심 처리 : 해당 메소드에서만 처리한다. (종단관심)
: 핵심 관리 처리 클래스 선언한다.
: weaving
위의 코드가 아래처럼 변경된다.
aspect 공통관심로직 advice aspect 클래스 target 핵심 관심 클래스 weaving target에 advice 연결
weaving 설정 이후에는 target 클래스 객체 - 메소드를 호출하면 자동으로 advice 클래스가 실행된다.point-cut advice 지정 시점 결정
예: target 클래스의 public 메소드 실행하기 전에 실행하겠다!Maven AspectJWeaver ==> pom.xml에 추가
- spring mvc maven 프로젝트
- => AspectJ Weaver 다운
- pom.xml에 추가한다
aspectjweaver<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.9.1</version>
<scope>runtime</scope>
</dependency>
실습
1. Member (target class)
2. Board (target class)
3. Common (advice class)
4. aspectjweaver Dependency 추가
5. aop1.xml 구성
6. 핵심 관심 이전(before) / 이후(after) / 이전이후(around)
1. xml로 aop 설정하기
- aspect 클래스 생성 
- aop1.xml 설정
- Member, Board, Common 클래스 객체 생성
- <aop:config /> 설정 생성
- <aop:config> </ aop:config> 내부에 pointcut, aspect, before를 설정한다.


2. annotation으로 관점지향프로그래밍 하기





expression 표현
"execution ( * aop1.*.*(String, int))"- 모든 접근제어자, aop1 패키지, 모든 클래스, 모든 메소드, String / int 파라미터
"execution ( * aop1.*.log*(..))"- 모든 접근제어자, aop1패키지, 모든 클래스, log로 시작하는 메소드, 모든 파라미터
"execution ( * *.*.*(..))"- 모든 접근제어자, 모든 패키지, 모든 클래스, 모든 메소드, 모든 파라미터
"execution ( public aop1.*.*(..))"- public 접근제어자, aop1 클래스, 모든 메소드, 모든 파라미터
'스타터스 백엔드 3기' 카테고리의 다른 글
[ Spring ] 4. 스프링 MVC 기능 (0) 2023.01.12 STS3 자바 프로젝트 생성하면 할 일 (Java, Java Compiler, Java Build Path, Project Facet, Java Installs) (0) 2023.01.12 [ Servlet / JSP ] 9. AJAX (0) 2023.01.10 [ Servlet / JSP ] 8. JSP el, jstl 태그 (0) 2023.01.09 [ Servlet / JSP ] 7. JSP action tag (0) 2023.01.09