일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- transaction
- http
- Thymeleaf
- jpa
- QueryDSL
- kotlin
- pointcut
- db
- Android
- 김영한
- SpringBoot
- springdatajpa
- spring
- Spring Boot
- JPQL
- 인프런
- 스프링 핵심 원리
- 스프링 핵심 기능
- AOP
- Proxy
- Greedy
- 스프링
- java
- Servlet
- JDBC
- Exception
- 그리디
- 백준
- 자바
- Today
- Total
목록@Around (4)
개발자되기 프로젝트
어드바이스는 앞서 살펴본 @Around 외에도 여러가지 종류가 있다. 1. Advice종류 @Around : 메서드 호출 전후에 수행, 가장 강력한 어드바이스, 조인 포인트 실행 여부 선택, 반환 값 변환, 예외 변환 등이 가능 ->모든 것을 할 수 있음. @Before : 조인 포인트 실행 이전에 실행 @AfterReturning : 조인 포인트가 정상 완료후 실행 @AfterThrowing : 메서드가 예외를 던지는 경우 실행 @After : 조인 포인트가 정상 또는 예외에 관계없이 실행(finally) 2. AspectV6 @Slf4j @Aspect public class AspectV6Advice { /* //hello.aop.order 패키지와 하위 패키지이면서, 클래스 이름 패턴이 *Servi..
추가로 트랜잭션을 적용하는 코드도 추가해 보자. 기능이 동작한 것 처럼 로그만 남겨보자. 트랜잭션 기능은 보통 다음과 같이 동작한다. 핵심 로직 실행 직전에 트랜잭션을 시작 핵심 로직 실행 핵심 로직 실행에 문제가 없으면 커밋 핵심 로직 실행에 예외가 발생하면 롤백 1. AspectV3 @Slf4j @Aspect public class AspectV3 { //hello.aop.order 패키지와 하위 패키지 @Pointcut("execution(* hello.aop.order..*(..))") private void allOrder(){ } // pointcut signature //클래스 이름 패턴이 *Service @Pointcut("execution(* *..*Service.*(..))") priv..
1. @Aspect 프록시 - 적용 스프링 애플리케이션에 프록시를 적용하려면 포인트컷과 어드바이스로 구성되어 있는 어드바이저 ( Advisor )를 만들어서 스프링 빈으로 등록하면 된다. 그러면 나머지는 앞서 배운 자동 프록시 생성기가 모두 자동으로 처리해준다. 자동 프록시 생성기는 스프링 빈으로 등록된 어드바이저들을 찾고, 스프링 빈들에 자동으로 프록시를 적용해준다. (물론 포인트컷이 매칭되는 경우에 프록시를 생성한다.) 스프링은 @Aspect 애노테이션으로 매우 편리하게 포인트컷과 어드바이스로 구성되어 있는 어드바이저 생성 기능을 지원한다. 지금까지 어드바이저를 직접 만들었던 부분을 @Aspect 애노테이션을 사용해서 만들어보자. 참고 @Aspect 는 관점 지향 프로그래밍(AOP)을 가능하게 하는 ..
모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심사항(cross-cutting concern) vs 핵심 관심사항(core concern) AOP 관련 용어 , Aspect, Advice, Execution .. AOP : Aspect Oriented Programming (관점 지향 프로그램) 핵심적인 관심사항(Core Concern)과 공통 관심 사항(Cross cutting concern)으로 분리하고 각각을 모듈화 하는 것. 예를 들어 각 메서드마다 실행.. bsh-developer.tistory.com 각 메서드의 호출시간을 확인해 보자... 1. AOP 미사용 시 AOP를 사용하지 않으면, 일일히 하나하나 한땀한땀 코드를 넣어줘야 한다. 요렇게... public Long join(..