Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
Tags
- 원씽
- 슬래시24
- 교양철학
- Kubernetes
- 클라우드입문자
- nhn_cloud_console
- 쿠버네티스기초
- 만화로보는3분철학
- 성장마인드셋
- Mac m1
- 만화철학
- 일상의행복
- spring mvc project
- 도커
- 미국채권
- Rectangle
- 코딩 특수문자
- m1 sts3 설치
- sm회사
- sts3
- 티스토리 야간모드
- si회사
- 다크모드
- docker
- 클라우드기초교육
- 거래소 운영시간
- 3분철학
- 쿠버네티스
- nhn cloud
- 다국어 입력전환
Archives
- Today
- Total
Good Morning
Spring AOP 입문자 가이드: 자동 로깅 예제로 배우는 AOP 본문
들어가며
안녕하세요! 오늘은 Spring AOP(Aspect-Oriented Programming)에 대해 쉽게 알아보겠습니다. AOP가 뭔지, 어떻게 동작하는지 간단한 예제를 통해 설명해드릴게요.
AOP란 무엇인가?
AOP는 프로그램의 주요 기능에 영향을 주지 않으면서 추가 기능을 넣을 수 있는 프로그래밍 방식입니다. 쉽게 말해, 우리 일상에서 일어나는 일을 기록하는 '자동 일기장'을 상상해보세요. 여러분은 평소처럼 생활하고, 이 일기장은 알아서 모든 것을 기록합니다.
예제로 배우는 AOP
우리의 예제는 간단한 수학 수업을 통해 AOP를 설명합니다.
1. 수학 선생님 (MyMath 클래스)
@Component
public class MyMath {
public int add(int a, int b) {
return a + b;
}
// 다른 메서드들...
}
이 클래스는 덧셈, 뺄셈, 곱셈 같은 기본적인 수학 연산을 수행합니다.
2. 조용한 기록자 (LoggingAdvice 클래스)
@Aspect
@Component
public class LoggingAdvice {
@Around("execution(* com.fastcampus.ch3.aop.MyMath.*(..))")
public Object methodCallLog(ProceedingJoinPoint pjp) throws Throwable {
// 메서드 실행 전 로깅
// 실제 메서드 실행
// 메서드 실행 후 로깅
}
}
이 클래스는 MyMath의 모든 메서드 실행을 기록합니다. 수업 시작 시간, 내용, 결과, 종료 시간을 모두 적습니다.
3. 학교 규칙 (root-context_aop.xml)
<aop:aspectj-autoproxy/>
<context:component-scan base-package="com.fastcampus.ch3.aop"/>
이 설정은 "모든 수학 수업에는 기록자가 참석해야 한다"라는 규칙을 만듭니다.
4. 수업 진행 (AopMain2 클래스)
public class AopMain2 {
public static void main(String[] args) {
ApplicationContext ac = new GenericXmlApplicationContext("file:src/main/webapp/WEB-INF/spring/root-context_aop.xml");
MyMath mm = (MyMath) ac.getBean("myMath");
System.out.println("mm.add(3, 5) = " + mm.add(3, 5));
}
}
이 클래스는 실제로 수업을 시작하고 선생님에게 계산을 요청합니다.
어떻게 동작하나요?
- 수업이 시작됩니다 (AopMain2 실행).
- 학교 규칙에 따라 수학 선생님과 기록자가 준비됩니다.
- "3 더하기 5는 얼마예요?"라는 질문이 들어옵니다.
- 기록자가 "선생님이 3과 5의 덧셈을 시작합니다"라고 적습니다.
- 선생님이 계산을 합니다.
- 기록자가 "결과는 8입니다. 계산하는 데 0.001초 걸렸습니다"라고 적습니다.
- "3 더하기 5는 8입니다"라고 최종 발표됩니다.
AOP의 장점
- 관심사의 분리: 선생님(MyMath)은 수학만 가르치면 되고, 기록은 다른 누군가(LoggingAdvice)가 담당합니다.
- 재사용성: 다른 과목의 수업에도 같은 기록 방식을 쉽게 적용할 수 있습니다.
- 유지보수의 용이성: 기록 방식을 바꾸고 싶다면 LoggingAdvice만 수정하면 됩니다.
마치며
Spring AOP를 사용하면 프로그램의 주요 로직을 건드리지 않고도 로깅, 보안 검사, 트랜잭션 관리 등 다양한 기능을 쉽게 추가할 수 있습니다. 이는 코드를 더 깔끔하게 유지하고, 변경에 유연하게 대응할 수 있게 해줍니다.
AOP는 처음에는 복잡해 보일 수 있지만, 이해하고 나면 정말 유용한 도구가 됩니다. 여러분의 프로그래밍 여정에 AOP가 큰 도움이 되길 바랍니다!
'Back-End > Spring' 카테고리의 다른 글
Spring MVC에서의 효과적인 페이징 처리 (1) | 2024.09.25 |
---|---|
Spring Framework 핵심 기능 탐구: 컴포넌트 스캔, 의존성 주입, 그리고 ApplicationContext (0) | 2024.08.06 |
Java 리플렉션을 이용한 간단한 의존성 주입 구현하기 (0) | 2024.08.04 |
스프링 MVC에서의 에러 페이지 리다이렉션 이해하기 (1) | 2024.08.01 |
Spring Framework에서의 효과적인 예외 처리 (0) | 2024.08.01 |