Spring AOP
2134 ワード
AOP
AOPが必要
AOPの適用
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect
@Component // 쓰거나 아니면 bean으로 등록
public class TimeTraceAop {
@Around("execution(* hello.hellospring..*(..))") // 적용할 부분 설정
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
System.out.println("START"+joinPoint.toString());
try {
return joinPoint.proceed(); // 다음 method로 진행
} finally {
long finish = System.currentTimeMillis();
long timeMs = finish-start;
System.out.println("End"+joinPoint.toString()+" "+timeMs+"ms");
}
}
}
aopがある場合は、偽メンバーサービス(エージェント)、JoinPointを作成して実行します.プロセス()を実行すると、実際のMemberSerivceが実行されます.エージェントが実行中であることを確認できます.
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
System.out.println("memberService = "+ memberService.getClass());
}
결과
STARTexecution(MemberService hello.hellospring.SpringConfig.memberService())
Endexecution(MemberService hello.hellospring.SpringConfig.memberService()) 13ms
memberService = class hello.hellospring.service.MemberService$$EnhancerBySpringCGLIB$$71033579
memberService = class hello.hellospring.service.コードは、M e m b e r v e r i c e n h a n cerBySpringCGLIBySpringCGLIB 71033579->MemberSerivceをコピーして操作します.Ref:
*金英漢の春入門-Spring Boot、Web MVC、DBアクセス技術をコードで学ぶ
Reference
この問題について(Spring AOP), 我々は、より多くの情報をここで見つけました https://velog.io/@stella317/Spring-AOPテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol