본문 바로가기

AOP3

[Spring AOP 이론] 스프링 AOP! [Spring AOP 이론] 스프링 AOP AOP의 탄생 애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있다. 로그 작성, 예외처리 로직 등 부가 기능은 이름 그대로 핵심 기능을 보조하기 위해 존재한다. 클래스가 100개면 100개 모두에 동일한 코드를 추가해야 한다. 부가 기능을 별도의 유틸리티 클래스로 만든다고 해도, 해당 유틸리티 클래스를 호출하는 코드가 결국 필요하다. 템플릿 메서드 클래스,전략 클래스 등으로 분리해도 결국 이 클래스를 호출하는 코드 자체는 필요하다. 그리고 부가 기능이 구조적으로 단순 호출이 아니라 try~catch~finally 같은 구조가필요하다면 더욱 복잡해진다. 부가 기능 적용 문제를 정리하면 다음과 같다. 부가 기능을 적용할 때 아주 많은 반복이 필요하다... 2022. 2. 10.
[스프링 AOP 동작 원리] 빈 후처리기(feat.스프링이 제공하는 빈 후처리기) [스프링 AOP 동작 원리] 빈 후처리기(feat.스프링이 제공하는 빈 후처리기) 간단하게 표현해서 빈 등록과정을 조작하는 것이다. 이것은 스프링 빈 객체를 조작하거나 심지어 다른 객체로 바꾸어 버릴 수 있을 정도로 막강하다 이 말은 스프링 빈 객체를 프록시로 교체하는 것도 가능하다는 뜻이다 스프링이 제공하는 BeanPostProcessor 인터페이스를 구현해서 만든다. 빈 후처리기를 사용하려면 BeanPostProcessor 인터페이스를 구현하고, 스프링 빈으로 등록하면 된다. postProcessBeforeInitialization: 객체 생성 이후에 @PostConstruct 같은 초기화가 발생하기 전에 호출되는 포스트 프로세서이다. postProcessAfterInitialization: 객체 생.. 2022. 2. 10.
스프링 AOP StackOverflowError (feat.스프링 AOP 동작원리) AOP StackOverflowError AOP를 적용하는 과정에서 다음과 같은 이슈가 발생했다. org.springframework.beans.factory.BeanCreationException ... 스프링 빈 생성에 예외가 발생했다는 의미인데, Caused by 를 보니 아래와 같았다. 이 로그 이후로도 쭉 반복적으로 순환호출하는 양상을 보였다. java.lang.StackOverflowError : null StackOverflowError가 터진것을 보아 어디선가 무한순환을 유발하는 굴래가 존재한다는것 같다. AOP를 위해 만든 LogTraceAspect 즉 AOP 설정 클래스를 계속 호출하는것을 확인할수있다. LogTraceAspect 코드 @Component //컴포넌트 스캔: 빈 등록 @.. 2022. 2. 10.