일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Save Action
- jpa
- AOP 매개변수
- findFirst
- Thread Safety
- AOP this
- findAny
- @AutoConfiguration
- vaultTemplate
- java
- ClientHttpRequestInterceptor
- 쓰레드 안전
- AOP
- AOP target
- RestTemplate
- LogInterceptor
- Stream
- auto configuration
- ResponseBodyAdvice
- restTemple
- gradle
- AccessLevel
- JsonStringType
- 개방/폐쇄 원칙
- spring
- Spring Boot
- Starter
- fotmatter
- 포맷터
- JsonType
- Today
- Total
목록AOP (6)
맨땅에 헤딩하는 개바른자
이번 포스팅은 AOP를 활용하여 Null체크하는 방법에 대해서 설명하는 글입니다. 사실 용도로봤을 때는 큰 장점이 있는 기능은 아닙니다만 공부하는 겸 생각해내서 만들어본 기능입니다. (변수 타입별로 null체크하는 건 개선이 필요한 코드입니다.) 목적 컨트롤러에서 @Valid등 다양한 validation이 처리되어 service 단으로 유입됩니다. 그렇기에 service에서 null체크 없이 마음껏 데이터를 get하여 사용하기 부담이 없습니다. 근데 가끔은 service로직에서 infra단에서 조회 된 데이터의 경우 null 체크를 해야하는 경우가 발생되곤 합니다. 이럴 때 우리가 쉽게 null 처리를 할 수 있는 방안을 모색하고자 고안해낸 방법입니다. 사용 가이드 servie에서 public void ..
특정 메소드 단위로 어노테이션이 붙은 곳에서만 param 값에 대한 로그를 찍는 AOP를 적용해보는 글입니다. 실전코드 : https://github.com/ymwoo88/study-springboot-aop/tree/feature/스프링-AOP-실전코딩-로그trace 실전예제 커스텀 어노테이션 생성 로그 Trace에 사용 될 어노테이션으로 명칭을 그래로 Trace로 생성 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Trace { } @Aspect 컨피그 추가 어노테이션 기반 joinPoint 생성 @Slf4j @Aspect public class TraceAspect { @Before("@annotat..

[AOP] this, target는 스프링 프레임워크에서 사용되는 개념입니다. this: 메소드 실행 객체**(프록시객체)**를 참조하는 키워드입니다. target: 실제 메소드가 구현된 객체를 참조하는 키워드입니다. 이를 이용하여, 스프링에서 AOP를 구현할 때, 메소드 실행 전/후에 추가적인 작업을 수행할 수 있습니다. 예를 들어, 로깅 기능을 추가하고 싶다면, AOP를 활용하여 해당 메소드 실행 전/후에 로깅을 수행할 수 있습니다. 이처럼, [AOP] this, target는 스프링에서 AOP를 구현하는 데 필수적인 개념이므로, 이를 잘 이해하고 활용하는 것이 중요합니다. this와 target은 다음과 같이 적용타입 하나를 정확하게 지정해야 한다. this(hello.aop.member.Membe..
이 문서에서는 AOP(Aspect Oriented Programming)에서 매개변수 전달에 대해 다룹니다. 포인트컷 표현식을 사용해서 어드바이스에 매개변수를 전달 할 수 있는 방법을 알아보겠습니다. this. target, args, @targer, @within, @annotation, @args 다음과 같은 예제코드가 있다. @Before("allMember() && args(arg...)") public void logArgs3(String arg) { log.info("[logArgs3] arg={}", arg); } 포인트컷의 이름과 매개변수의 이름을 맞추어야 한다. 여기서는 “arg”로 맞추었다. 추가로 타입이 메서드에 지정한 타임으로 제한된다. 여기서는 메서드의 타입이 “String”으로 ..
AOP에서는 @annotation과 @args를 이용하여 메소드 실행 전/후에 추가적인 작업을 할 수 있습니다. @annotation: 메소드에 적용된 어노테이션을 기반으로 추가 작업을 수행할 수 있습니다. 예를 들어, @Transactional 어노테이션이 적용된 메소드에서는 트랜잭션을 관리하는 작업을 추가로 수행할 수 있습니다. @args: 메소드의 인자에 따라 추가 작업을 수행할 수 있습니다. 예를 들어, 메소드의 인자 중 특정 클래스 타입을 가진 인자가 있는 경우, 그에 맞는 추가 작업을 수행할 수 있습니다. 이러한 어노테이션을 이용하여 AOP에서는 메소드 실행 전/후에 로깅, 보안, 트랜잭션 등 다양한 작업을 추가로 수행할 수 있습니다. 예제코드 어노테이션을 생성 package hello.aop..

많이 쓰이지 않은 기능이지만 알고있으면 좋은 내용이다. AOP로 포인트컷을 활용할 때 상황에 따라 사용할 수 있다. target은 인스턴스의 모든 메서드를 조인 포인트로 동작한다. target은 부모의 메소드까지 적용 within은 해당 타입 내에 있는 메서드만 조인 포인트로 동작한다. 자식본인의 메서도만 허용 interface Parent { parentMethod(); } @ClassAop class Child implements Parent { childMethod(); } // @target : 인스턴스 기준으로 모든 메서드의 조인 포인트를 선정, 부모 타입의 메서드도 적용 // Parent.parentMethod() 감지 O // Child.childMethod() 감지 O @Around("ex..