You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
β λ¬Έμ μν©
No response
π ν΅μ¬ λ΄μ©κ³Ό λ°©ν₯μ±
컀μ€ν μ΄λ Έν μ΄μ
LogTimeInvocation,LogMonitoringInvocation,LogMethodInvocationLogTimeInvocation
LogMonitoringInvocation
LogMethodInvocation
λͺ©μ
ν΄λΉ μ΄λ Έν μ΄μ λ€μ λ¨μν βνμμ©β λ§μ»€(Marker)
μλ‘μ΄ μ»€μ€ν μ΄λ Έν μ΄μ μμ±
νΉμ§
@Retention(RetentionPolicy.RUNTION): λ°νμκΉμ§ μ μ§λμ΄ AOPμμ 리νλ μ μ ν΅ν΄ μ κ·Ό κ°λ₯@Target(ElementType.METHOD): λ©μλμλ§ μ μ©μ¬μ©μμ
μ΄ κ²½μ°, AOP μ€μ μμ
@LogTimeInvocationμ΄ λΆμ λ©μλλ₯Ό μ°Ύμ μ²λ¦¬ExecutionTimeLoggingAspect
μν
μ€ν μκ° μΈ‘μ λ° λ‘κΉ
μ΄ Aspectλ λ©μλ μ€ν μ νμ μκ°μ μΈ‘μ νμ¬ μ€ν μκ°μ λ‘κΉ
λμ λ°©μ
@Aroundμ΄λλ°μ΄μ€λ©μλ νΈμΆ μ νμ κ³΅ν΅ λ‘μ§ (μ¬κΈ°μλ μκ° μΈ‘μ )μ μ½μ κ°λ₯
λμ
@LogTimeInvocationλλ@LogMonitoringInvocationμ΄λ Έν μ΄μ μ΄ λΆμ λ©μλκ° νΈμΆ λ λλ§λ€ ν΄λΉ μ΄λλ°μ΄μ€ λμꡬν μΈλΆμ¬ν
ProceedingJoinPointλ₯Ό μ¬μ©ν΄ νΈμΆ λμ(λ©μλ)μ μ 보λ₯Ό κ°μ Έμ΅λλ€.startTime)μ κΈ°λ‘ν©λλ€.joinPoint.proceed()λ₯Ό νΈμΆνμ¬ μ€μ λ©μλλ₯Ό μ€νν©λλ€.endTime)μ κΈ°λ‘ν ν, λ μκ°μ μ°¨μ΄λ₯Ό κ³μ°νμ¬ μ€ν μκ°μ ꡬν©λλ€.MethodInvocationLoggingAspect
μν
λ©μλ νΈμΆ μ μμΈ μ 보 λ‘κΉ
μ΄ Aspectλ νΉμ λ©μλκ° νΈμΆ λ λ ν΄λΉ λ©μλμ μ΄λ¦, HTTP μμ²μ μ€μ λ RequestID, νλΌλ―Έν°, μ€ν κ²°κ³Ό λ‘κΉ
λμ λ°©μ
λμ
@LogMethodInvocationλλ@LogMonotoringInvocationμ΄λ Έν μ΄μ νΈμΆ μHTTP μμ² μ 보 νμ©
RequestContextHolderλ₯Ό ν΅ν΄ νμ¬ HTTP μμ² κ°μ²΄λ₯Ό κ°μ Έμ, μ μ₯ λ"RequestID"κ°μ μ½μμΈλΆμ¬ν
MethodSignatureλ₯Ό ν΅ν΄ νΈμΆλ λ©μλμ μ΄λ¦κ³Ό νλΌλ―Έν° μ 보λ₯Ό κ°μ Έμ΅λλ€.ServletRequestAttributesλ₯Ό μ¬μ©ν΄ νμ¬ HTTP μμ² κ°μ²΄λ₯Ό μ»κ³ ,"RequestID"μμ±μ μ½μ΅λλ€.joinPoint.proceed()λ₯Ό νΈμΆνμ¬ μ€μ λ©μλλ₯Ό μ€ννκ³ κ²°κ³Όλ₯Ό νλν©λλ€.@Aspectν΅μ¬ κ°λ
AOP(Aspect-Oriented Programming) μμ Aspectλ κ³΅ν΅ κ΄μ¬μ¬(cross-cuttion concern)λ₯Ό λͺ¨λν ν λ¨μ
μλ₯Όλ€μ΄, λ‘κΉ , νΈλμμ , 보μ κ²μ¬ λ± μ¬λ¬ ν΄λμ€ or 곡ν΅μ μΌλ‘ μ μ©λμ΄μΌ νλ κΈ°λ₯μ Aspectλ‘ μμ± κ°λ₯
κΈ°λ₯
Aspect ν΄λμ€λ λ΄λΆμ Advice(μ΄λλ°μ΄μ€)μ Pointcut(ν¬μΈνΈμ»·) μ μλ₯Ό ν¬ν¨
β
@Aspectκ° μ μΈλ ν΄λμ€λ μ€νλ§ μ»¨ν μ΄λμ μν΄ Aspect λ‘ μΈμ, μ§μ λ ν¬μΈνΈμ»· μ λ§λ λ©μλκ° νΈμΆλ λ μλμΌλ‘ Advice μ μ©@Aroundμ΄λλ°μ΄μ€ν΅μ¬ κ°λ
Join Point(λ©μλ νΈμΆ λ±) μ νμ μ€νλλ Advice β μ€μ λ‘μ§
λ©μλ μ€ν μ , ν λͺ¨λμ μ½λ μ½μ μ΄ κ°λ₯νλ―λ‘ κ°μ₯ μ μ°ν ννμ μ΄λλ°μ΄μ€
λμ κ³Όμ
1. μ€ν μ μ²λ¦¬
@Aroundμ΄λλ°μ΄μ€ λ©μλκ° νΈμΆλλ©΄, μνλ μ¬μ μ²λ¦¬ (ex. μμ μκ° κΈ°λ‘, νλΌλ―Έν° λ‘κΉ λ±) μν2. λ©μλ μ€ν
ProceedingJoinPost.proceed()λ₯Ό νΈμΆνμ¬ λμ λ©μλ μ€ν3. μ€ν ν λ°ν
ProceedingJoinPoint μΈν°νμ΄μ€
JoinPoint μΈν°νμ΄μ€λ₯Ό νμ₯ν λ²μ
λ©μλ μ€νμ μ§μ μ μ΄ κ°λ₯
μ£Όμ λ©μλ
proceed():getArgs():getSignature():getTarget():toShortString(),toLongString():μ 리
@aspect:
AOPμ ν΅μ¬ λ¨μλ‘, κ³΅ν΅ κ΄μ¬μ¬λ₯Ό λͺ¨λννλ ν΄λμ€μ λΆμ¬μ μ¬λ¬ λμ λ©μλμ κ³΅ν΅ κΈ°λ₯(μ: λ‘κΉ , νΈλμμ κ΄λ¦¬ λ±)μ μ μ©ν μ μλλ‘ ν©λλ€.
@around μ΄λλ°μ΄μ€:
λμ λ©μλ νΈμΆ μ νμ μ€νλλ μ΄λλ°μ΄μ€λ‘, λ©μλ μ€ν μ νμ μνλ λΆκ°κΈ°λ₯(μ: μ±λ₯ μΈ‘μ , μΈμ/κ²°κ³Ό λ‘κΉ λ±)μ μ μ©νλ©°, μ€ν μ체λ₯Ό μ μ΄ν μ μμ΅λλ€.
ProceedingJoinPoint:
@around μ΄λλ°μ΄μ€μμ μ¬μ©λλ μΈν°νμ΄μ€λ‘, λμ λ©μλμ μ€νμ μ μ΄ν μ μλ ν΅μ¬ μΈν°νμ΄μ€μ λλ€.
μ΄λ₯Ό ν΅ν΄ λ©μλ μ€ν μ νμ μΈμ, μλͺ , κ²°κ³Ό λ±μ μ»κ³ μ‘°μν μ μμ΅λλ€.
π νΈλ¬λΈμν λ° κΈ°λν¨κ³Ό
No response
π κ΄λ ¨ μλ£
No response
πβ λ΄λΉμ
Beta Was this translation helpful? Give feedback.
All reactions