AOP
-
@Transactional 사용 시 주의해야 할 사항들스터디 노트 2023. 12. 4. 16:57
@Transactional 애너테이션은 스프링 AOP를 사용해 동작합니다. AOP 위빙이 되지 않은 채 대상 메서드가 실행되어도 알기가 어렵습니다. 즉, 대상 메서드가 실행되었지만, 어드바이스가 정상적으로 실행되지 않을 수 있다는 말이 됩니다. 여기서 개발자가 쉽게 실수하는 두 가지 주의 사항과 사용할 때 유의점을 살펴보도록 하겠습니다. ✅ public 접근제어자로 선언된 메서드만 @Transactional 애너테이션이 동작합니다. final이나 private 접근제어자로 선언된 메서드는 프록시로 만들 수 없기 때문에 애너테이션을 선언해도 정상동작하지 않습니다. ✅ 스프링 빈으로 주입된 객체의 메서드를 호출해야 합니다. 당연하겠죠. 우리는 스프링 프레임워크 위에서 동작하게 됩니다. ApplicationC..
-
@Transactional 애너테이션에 대하여스터디 노트 2023. 12. 4. 13:09
스프링 프레임워크에선 데이터베이스 트랜잭션 기능을 사용할 수 있는 Transactional 애너테이션을 제공합니다. 이 애너테이션은 JPA가 아닌 스프링 프레임워크에서 제공하는 기능입니다. 트랜잭션은 영속성 프레임워크의 종류와 상관없는 관계형 데이터베이스의 기능이기 때문에 JPA/Hibernate도 결국 SQL쿼리로 데이터를 영속하므로 트랜잭션을 사용할 수 있지요. 다음은 Transactional 애너테이션 코드입니다. @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Transactional { ... } Transactional ..
-
Aspect Oriented Programming(AOP) 에 대하여스터디 노트 2023. 11. 23. 22:17
📌 들어가며 해당 내용은 '스프링부트로 개발하는 MSA 컴포넌트' 책을 참고하여 작성되었습니다. 📌 Aspect Oriented Programming(AOP) AOP란 무엇일까요? AOP란 프로그램의 구조를 관점 기준으로 공통 관심사를 분리하여 기능을 제공하는 방식으로 구현하는 것을 말합니다. 즉, 횡단관심사들을 따로 모아놓은 기능 모듈이라고 생각하면 되겠지요. 핵심 비즈니스 로직 가운데 공통의 횡단 관심사의 기능들을 모아 제공하는 방식이라 생각하면 됩니다. 우린 이 AOP를 사용하여 클래스의 코드와 관점의 코드를 완전히 분리해낼 수 있습니다. 관점지향 프로그래밍을 위해서는 다음 설계 고려사항을 명심해야 합니다. ✅ 기능의 분류 애플리케이션의 기능적 요구사항과 비기능적 요구사항을 분류합니다. 기능적 요구..