AOP๊ฐ ๋ด๊ณ ์๋ ๋ฐ์
AOP๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ช๋ช ์ค์ฌ์ ์ธ ์๊ฐ๋ค๊ณผ ์ฉ์ด๋ค์ ์ ์ํ๋ ๊ฒ์ผ๋ก ์์ํด๋ณด์! ์ฌ๊ธฐ์ ์ฐ์ด๋ ์ฉ์ด๋ค์ ์คํ๋ง ๋ง์ถค์ด ์๋๋ค. ๋ฐ๋ผ์ ๋ถํํ๊ฒ๋ AOP์ ์ฉ์ด๋ค์ ํน๋ณํ ์ง๊ด์ ์ด์ง ๋ชปํ๋ค. ํ์ง๋ง, ๋ง์ฝ ์คํ๋ง์ด AOP ๊ฐ๋ ๋์ ์ ์ํ ๊ทธ๊ฒ๋ง์ ์ฉ์ด๋ฅผ ์ผ๋ค๋ฉด, ๊ทธ๊ฒ์ด ๋ ์ฐ๋ฆฌ๋ฅผ ํผ๋์ค๋ฝ๊ฒ ๋ง๋ค ๊ฒ์ด๋ค!
1. ์ฉ์ด์ค๋ช
- Aspect(๊ด์ ): ๋ณต์์ Class๋ค์ ๊ฐ๋ก์ง๋ฅด๋ ๊ด์ฌ์ฌ์ ๋ํ ๋ชจ๋ํ๋ฅผ ์๋ฏธํ๋ค.
(๊ธฐ์กด์ ์ฐ๋ฆฌ๊ฐ ์๋ฒ ๋ก์ง์ ๊ณต๋ถํ ๋, ๊ธฐ๋ฅ์ ๋ฌด์์ด๋ผ ์๊ฐํ๋๊ฐ? Service Class ํ๋๊ฐ ๊ณง ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํ๋ค. ํ์ง๋ง AOP์์๋ ๊ด์ ์ ๋ฌ๋ฆฌํ์ฌ, ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์๊ตฌ๊ฐ ๋ค์ด์์ Controller -> ๋ณต์์ ์๋น์ค ๋ก์ง -> ๋ค์ ์๋ต ๊น์ง์ ์ ๊ณผ์ ์ ํ๋์ ๊ด์ฌ์ฌ๋ก ๋ณด๊ฒ ๋ค๋ ๋ป์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํ ํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค. ) - Join Point(๋ถ๊ฐ ๊ธฐ๋ฅ์ ํฉ๋ฅ ์ง์ ): ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋์์ ์ด๋ ํ ์ง์ ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด์ ๋งค์๋๋ฅผ ์คํํ๋ ์ง์ ์ด๋, ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ง์ ๋ฑ์ด ์๋ค. Spring AOP์์๋ Join Point๋ ์ธ์ ๋ ๋งค์๋ ์คํ ์ง์ ์ ์๋ฏธํ๋ค.
- Advice(๋ถ๊ฐ ๊ธฐ๋ฅ): ํน์ Join Point์์ Aspect์ ์ํด ์คํ๋์ด์ง ํ๋์ ์๋ฏธํ๋ค. advice์๋ "around", "before", "after"๋ฅผ ํฌํจํด ๋ค์ํ ์ ํ์ด ์กด์ฌํ๋ค. (advice์ ์ ํ๋ค์ ๋ํด์ ๋์ค์ ๋ค์ ํ ์ํ๊ฒ ๋ค.) ์คํ๋ง์ ํฌํจํ ๋ง์ AOP ํ๋ ์์ํฌ๋ค์ advice๋ฅผ Interceptor์ฒ๋ผ ๊ตฌํํ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ จ์ Interceptor๋ค์ join Point ์ฃผ๋ณ์ ์ ์ง์์ผฐ๋ค. (join point๋ฅผ ์ผ๋ จ์ advice ๊ณ ๋ฆฌ๋ก ๋๋ฌ์ ์ ์๋ค๋ ๊ฒ์ ๋งํ๋ ๊ฒ ๊ฐ๋ค.)
- Pointcut: Join Point๋ค๊ณผ ์ฐ๊ฒฐ์ํค๋ ํ๋์ ์ ๋ถ์ด๋ค. (Pointcut์ ์ฌ๋ฌ Join Point ์ค advice๊ฐ ์คํ๋ ์ง์ ํน์ ์คํ๋์ง ๋ง์์ผํ ์ง์ ์ ์์ ํ๋ ํ๋์ ์ ๋ถ์.) Advice๋ ํ๋์ pointcut ํํ์๊ณผ ์ฐ๊ด๋์ด์ ธ์๊ณ , ๊ทธ pointcut์ ์ํด ์ฐ๊ฒฐ๋์ด์ง ์ด๋ ํ join point์์ ์คํ๋์ด์ง๋ค. [์๋ฅผ ๋ค์ด, ํน์ ์ด๋ฆ์ ๊ฐ์ง ๋งค์๋์ ์คํ์ง์ ์ advice A ์์ pointcut ํํ์์ผ๋ก ์ ์ผ๋ฉด advice A๋ ๊ทธ ๋งค์๋ ์คํ ์ง์ ์์ ์คํ๋จ. ] *'pointcut ํํ์์ ์ํด ์ฐ๊ฒฐ๋์ด์ง๋ Joint point๋ค' ์ด๋ ๊ฐ๋ ์ AOP์ ํต์ฌ์ ์ธ ๊ฐ๋ ์ด๋ค. * ๊ทธ๋ฆฌ๊ณ Spring์ ํ์ค์ผ๋ก AspectJ ํฌ์ธํธ ์ปท ํํ์์ ์ฌ์ฉํ๋ค.
- Introduction(๋์ ): ์ ํ์ ๋ํํ์ฌ, ์ถ๊ฐ์ ์ธ ํ๋ ํน์ ๋งค์๋๋ฅผ ์ ์ธํ๋ ๊ฒ์ ์๋ฏธํ๋ค. (ํ์ฌ ์ฌ์ฉํ๋ advice์ ์ ํ์ ๋งํ๋ ๋ฏ..?) Spring AOP๋ ๋น์ ์ด ์๋ก์ด interface(ํน์ ๊ทธ์ ์์ํ๋ ๊ตฌํ์ฒด)๋ฅผ ๋ถ๊ฐ๊ธฐ๋ฅ์ด ๋ถ์ด์๋ ๊ฐ์ฒด ์์ ๋์ ํ ์ ์๋๋ก ํด์ค๋ค. ์๋ฅผ ๋ค์ด ๋น์ ์ ์บ์ฑ์ ๋จ์ํ ํ๋ ์ฉ๋์ธ, IsModified ๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ Bean ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด Introduction์ ์ฌ์ฉํ ์ ์๋ค. (introduction์ AspectJ ์ปค๋ฎค๋ํฐ์์ inter-type ์ ์ธ์ผ๋ก์ ์๋ ค์ ธ ์๋ค.)
- Target Object: ํ๋ ํน์ ๊ทธ ์ด์์ Aspect์ ์ํด ์กฐ์ธ๋(adivised: ์ฆ ๋ถ๊ฐ๊ธฐ๋ฅ์ด ๋ถ์) ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ๋ํ "advised Object"๋ผ๋ ์ด๋ฆ์ผ๋ก๋ ์ธ๊ธ๋์ด์ง ์ ์๋ค. Spring AOP๊ฐ ๋ฐํ์ Proxy๋ค์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋์ด์ง ํ ๋ถํฐ, ์ด ๊ฐ์ฒด๋ ์ธ์ ๋ proxyํ๋ Object ์ด๋ค. (Proxy์ ๋ํ ์ถ๊ฐ ์ค๋ช ์ ๊ณต๋ถํด์ ๋ค๋ฅธ ํ์ด์ง ํ์ ์ ๋ฆฌํ๊ฒ ๋ค!)
- AOP proxy: Aspect ์๋ฆฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด AOP ํ๋ ์์ํฌ์ ์ํด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. (Aspect ์๋ฆฌ: ๋งค์๋ ์คํ ์ ๋ถ๊ฐ ๊ธฐ๋ฅ ๋ถ์ฐฉ๊ณผ ๊ฐ์ ๊ฒ) Spring Framework์์๋ AOP proxy๋ JDK dynamic proxy ์ด๊ฑฐ๋ ํน์ CGLIB proxy์ด๋ค.
- Weaving: ๋ถ๊ฐ ๊ธฐ๋ฅ์ด ๋ถ์ฐฉ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด, ๋ชจ๋ํ๋ ๊ธฐ๋ฅ๋ค์ ๋ค๋ฅธ ์์ฉ adviced๋ค ํน์ ์์ฉ ๊ฐ์ฒด๋ค์ ์ฐ๊ฒฐ์ํค๋ ๊ณผ์ ์ ์๋ฏธํ๋ค. ์ด๊ฒ์ ์ปดํ์ผ ์๊ฐ, ๋ก๋ ์๊ฐ ํน์ ๋ฐํ์์ ์ฒ๋ฆฌ๋ ์ ์๋ค. (์๋ฅผ ๋ค์ด, AspectJ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ปดํ์ผ ์๊ฐ์ ์ฒ๋ฆฌ๋๋ค.) Spring Aop์์๋, ๋ค๋ฅธ ์์ Java AOP ํ๋ ์์ํฌ๋ค ์ฒ๋ผ, ๋ฐํ์์ weaving์ ์ํํ๋ค.
2. Advice ์ ํ๋ค
Spring AOP๋ ํ์ ๋ adivce ์ ํ๋ค์ ํฌํจํ๋ค.
- Before advice: join Poin ์ด์ ์, ์คํ๋๋ Advice๋ฅผ ๋ปํ๋ค. ํ์ง๋ง, Before Advice๋ joinpoint๋ก ๋์๊ฐ๋ ์คํ ํ๋ฆ์ ์ฐจ๋จํ ๋ฅ๋ ฅ์ ์๋ค. (Before Advice๊ฐ ์๋ฌ๋ฅผ ๋ด๋ฑ์ง ์๋ ํ)
- After returning advice: join point์ ํด๋นํ๋ ๊ฐ์ฒด๊ฐ ๋ฌด์ฌํ ์๊ธฐ ์์ ์ ๋๋์ ๊ฒฝ์ฐ, ์คํ๋๋ advice์ด๋ค. (์๋ฅผ ๋ค์ด, ๋ง์ฝ์ ๋งค์๋๊ฐ ์๋ฌ๋ฅผ ๋ฑ์ง ์๊ณ ๋ฌด์ฌํ return์ ํ ๊ฒฝ์ฐ๊ฐ ์ด์ ์ํ๋ค.)
- After throwing advice: ๋ง์ฝ์ ๋งค์๋๊ฐ ์์ธ๋ฅผ ๋ด๋ฑ๊ณ ์ข ๋ฃ ๋์๋ค๋ฉด, ํด๋น advice๊ฐ ์คํ๋๋ค.
- After (finally) advice: join point์ ํด๋นํ๋ ๊ฐ์ฒด๊ฐ ์๋ฌ๋ฅผ ๋ด๋ฑ๊ณ ์ข ๋ฃํ๋ , ์ ์ ์ข ๋ฃ ํ๋ ๊ทธ ๊ทผ๊ฑฐ์ ์๋ฏธ๋ฅผ ๋์ง ์๊ณ , ์คํ๋๋ advice
- Around advice: ๋งค์๋ ํธ์ถ๊ณผ ๊ฐ์ join point๋ฅผ ๋๋ฌ์ธ๋ advice. ์ด๊ฒ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ ํ์ advice์ด๋ค. Around advice๋ ๋งค์๋ ํธ์ถ ์ด์ ๊ณผ ์ดํ์ ๋ง์ถค ํ๋์ ์ํํ ์ ์๋ค. ์ด๊ฒ์ ๋ํ join point๋ก ๋์๊ฐ ๊ฒ์ธ์ง ์๋์ง ํน์ ์ด advice ์์ฒด์ return ๊ฐ์ ๋ฐํํ๊ฑฐ๋ ์์ธ๋ฅผ ๋์ ธ์ ๋์ ๊ฐ์ฒด ์คํ ์์ฒด๋ฅผ ์๋ตํ ์ง์ ๋ํด์๋ ์ฑ ์์ง๊ณ ์๋ค.
Around advice๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ํ์ advice์ด๋ค. AspectJ๊ฐ์ Spring AOP๊ฐ ๊ด๋ฒ์ํ advice ์ ํ๋ค์ ์ ๊ณตํ ๋ค๋ก, ์ฐ๋ฆฌ๋ ๋น์ ๋ค์ด ์๊ตฌ๋ ํ๋์ ๊ตฌํํ ๊ฐ์ฅ ์ต์๋ก ๊ฐ๋ ฅํ advice ์ ํ์ ์ฌ์ฉํ๊ธธ ๊ถํ๋ค. ์๋ฅผ ๋ค์ด, ๋ง์ฝ ๋น์ ์ด ์ค์ง ๋งค์๋์ ๋ฐํ ๊ฐ๊ณผ ๊ด๋ จ๋ ์บ์๋ฅผ ์ ๋ฐ์ดํธํ ํ์๊ฐ ์๋ค๋ฉด, ๋น์ ์ after returning advice๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด around advice๋ฅผ ๊ตฌํ ํ๋ ๊ฒ๋ณด๋ค ๋ ๋์ ๊ฒ์ด๋ค. around advice๊ฐ ๊ฐ์ ์ผ์ ๋ฌ์ฑํ ์ ์์์๋ ๋ถ๊ตฌํ๊ณ , ๊ฐ์ฅ ํ์ํ ์ผ์ ๋ง์ถฐ์ ธ ์๋ advice๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฌ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ๋ ์ ์, ๋ ๋จ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ ๊ตฌํ์ผ๋ก ๊ฐ๋ ์ง๋ฆ๊ธธ ์ด๋ค. ์๋ฅผ ๋ค์ด, ๋น์ ์ around advice๋ฅผ ์ํด ์ฌ์ฉ๋์ด์ง๋ JoinPoint ์์ proceed() ๋งค์๋๋ฅผ ํธ์ถํ ํ์๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฐ ์ด์ ๋ก ๋น์ ์ ๊ทธ๊ฒ์ ํธ์ถํ๋๋ฐ ์คํจํ ์๊ฐ ์๋ค. (์์ง around advice๋ฅผ ์ฌ์ฉํ์ง ์์ ์ ํํ๋ ์ ์ ์์ง๋ง, around advice์ ๊ฒฝ์ฐ์ proxy ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๊ทธ ์์ ๋ณธ ๋งค์๋ ์ ์ ์ธ ๋ถ๊ฐ๊ธฐ๋ฅ - ๋ณธ๊ธฐ๋ฅ(proceed() ํจ์๊ฐ ๋ค์ด๊ฐ๋ ๊ณณ - ๋ถ๊ฐ๊ธฐ๋ฅ ์ผ๋ก ๊พธ๋ฉฐ์ผ ํ๋ค. ๋ฐ๋ผ์ ๋ด๋ถ์ ๋ง์ ๋ด์ฉ์ ๋ด๊ณ ์๋ค๋ณด๋ ์๋ฌ๊ฐ ๋ ์ ์ฌ์ฑ์ด ๋์ ๋ฐ๋ฉด ๋ค๋ฅธ ์ ํ์ advice๋ ๋ถ๊ฐ๊ธฐ๋ฅ๋ง ์ ์ผ๋ฉด ๋๋ฏ๋ก ์๋ฌ๋ ํ๋ฅ ์ด ์ ๋ค๋ ๊ฒ์ ๋งํ ๊ฒ์ด ์๋๊ฐ ์ถ๋ค.)
pointcut๋ค๊ณผ ์ผ์นํ๋ join point๋ค์ด๋ผ๋ ๊ฐ๋ ์ AOP์ ํต์ฌ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ค์ง interception๋ง ์ ๊ณตํ๋ ์๋ ๊ธฐ์ ๋ค๊ณผ AOP๋ฅผ ๊ตฌ๋ณํ๋ ์ง์ ์ด๋ค. Pointcuts๋ ๊ฐ์ฒด ์งํฅ ๊ตฌ์กฐ์๋ ๊ด๊ณ์์ด ๋ถ๊ฐ๊ธฐ๋ฅ์ ๋ง์ถค ์ ์ฉํ ์ ์๊ฒ ํ๋ค. ์๋ฅผ ๋ค์ด ๋น์ ์ ์์ ๋ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๊ฑธ์น๋ ๋งค์๋ ์งํฉ์๊ฒ ์ ๊ณตํ ์ ์๋ค. (์๋ฅผ ๋ค์ด ์๋น์ค ์ธต์ ๋ชจ๋ ๋น์ฆ๋์ค๋ก์ง์๊ฒ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ๊ฒ ๊ฐ์ )
์ถ์ : ํด๋น ์คํฌ๋ฆฝํธ์์ type์ advice์ ์ ํ๋ค ๊ทธ๋ฌ๋๊น after Advice, before Advice๋ฅผ ์ง์นญํ๋ ๊ฒ์ผ๋ก ์ฌ๋ฃ๋์ด type์ด๋ ๋ง์ ๋ฒ์ญ์ adivce์ ์ ํ์ด๋ผ๊ณ ์์ญํ์ต๋๋ค. ํน์ ํ๋ ธ๋ค๋ฉด ISSUE์ Question์ผ๋ก ๋ฃ์ด์ฃผ์ธ์.
๋ชฐ๋๋ ๋จ์ด ์ ๋ฆฌ
Engilsh | Korean |
---|---|
central | ์ค์ฌ์ ์ธ |
specific | ํน์ ํ (์ฌ๊ธฐ์๋ ์คํ๋ง ๋ง์ถค ์ฉ์ด๋ผ๋ ๋ป์ผ๋ก ์ฐ์ธ ๋ฏ) |
particularly | ํน๋ณํ |
intuitive | ์ง๊ด์ ์ธ |
aspect | ์ธก๋ฉด, ์์, ๋ฉด -> ์ฌ๊ธฐ์๋ ๋ฌธ์ ๋ฅผ ๋ฐ๋ผ๋ณด๋ ๊ด์ ์ด๋ผ ์ฐ์๋ค. |
cut across | ๊ฐ๋ก์ง๋ฅด๋ค. |
Modularization | ๋ชจ๋ํ ๋ชจ๋์ด๋? : ๋ชจ๋์ ์ํํธ์จ์ด ์ค๊ณํ ๋, ๊ธฐ๋ฅ๋ณ๋ก ์ฝ๋๋ค์ ๋ถํดํ๊ณ ์ถ์ํํ์ฌ, ์ด๋๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ , ๊ณต์ ๊ฐ๋ฅํ ์์ค์ผ๋ก ๋ง๋ค์ด์ง ๋จ์๋ฅผ ์๋ฏธํ๋ค. ์ด๋ ๊ฒ ์ฝ๋๋ค์ ๊ธฐ๋ฅ๋ณ๋ก ๋ถํดํ์ฌ ๋ชจ๋๋ก ํ๋์ฉ ๋ง๋ ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. |
represent | ...์ ํด๋นํ๋ค. (์ฌ๊ธฐ์๋ ๋ํํ๋ค์ ๋ป์ด ์๋ ํด๋นํ๋ค๋ผ๋ ์๋ฏธ๋ก ์ฐ์๋ค.) |
model | ~์ ๊ฒฌ๋ณธ, ๋ชจํ์ ๋ง๋ค๋ค. / ๋ง๋ค๋ค. |
English | Korean |
---|---|
chain | ์ฌ์ฌ, ๋ฌถ๋ค, ์ผ๋ จ |
predicate | ์ ๋ถ (John went home์์ went home ์ฒ๋ผ, ๋ฌธ์ฅ ์์์ ์ฃผ์ด์ ๋ํด ์ง์ ํ๋ ๋์ฌ์ดํ ๋ถ๋ถ ) |
match | ~์ ์ฐ๊ฒฐ์ํค๋ค. / ์ผ์นํ๋ค. / ๋ง๋จน๋ค. / ๋์ํ๋ค. |
behalf | ์ด์ต, ์์กฐ, ์ง์ง |
on behalf of ~ | ~์ ๋์ [๋ํ]ํ์ฌ |
introduce | (์ฌ์ฉํ ์ ์๋๋ก ๋ฌด์ธ๊ฐ๋ฅผ) ๋์ ํ๋ค. |
corresponding | (~์) ํด๋น(์์)ํ๋ |
proxy | ๋๋ฆฌ ํน์ ๋๋ฆฌ์ธ -> java์์์ proxy๋ ๋๋ฆฌ๋ก ์ผ์ ์ํํ๋ ํด๋์ค๋ฅผ ์๋ฏธํ๋ค. |
proceed |
exit | ๋๊ฐ๋ค. ์ข ๋ฃํ๋ค. ํด์ฅํ๋ค. |
---|---|
invocation | ๋ฐ๋ -> java์์ method invocation์ด๋ผ ์ ํ์๋ค๋ฉด '๋งค์๋ ํธ์ถ'์ ์๋ฏธํ๋ค. |
surround | ๋๋ฌ์ธ๋ค. ํฌ์ํ๋ค. |
shortcut | ์ง๋ฆ๊ธธ, ๋จ์ถํ๋ค? (์ฌ๊ธฐ์๋ ๋์ฌ๋ก ์ฐ์๋๋ฐ, ๋ช ์ฌ ์๋ฏธ๋ฐ์ ์ฐพ์ ์๊ฐ ์๋ค์. ๊ตฌ๊ธ ๋ฒ์ญ๊ธฐ๋ ๋จ์ถํ๋ค๋ก ํด์ํ์ฌ ์ด๋ ๊ฒ ์ฌ๋ฆฝ๋๋ค. ) |
responsible | ~์ ์ฑ ์ ์ง๊ณ ์๋, ~์ ๋ํด ์ฑ ์์ด ์๋ |
least | ๊ฐ์ฅ ์ต์์, ๊ฐ์ฅ ์ ์ |
be better off ~ | ~์ด ๋ ์ข๋ค |
hence | ๊ทธ๋ฐ ์ด์ ๋ก |
independently of ~ | ~์ ๊ด๊ณ ์์ด |
hierarchy | ๊ณ๊ธ, ์ง๋ฐฐ์ธต, ์ฒด๊ณ (๋ฐ์: hier-arc-chy -> ํ์ด์ผ์ํค) |
declarative | ์์ ๋ฌธ์ |
transaction | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด ์ํํ๋ ์์ ์ ๋จ์ |
provide A to B | A์๊ฒ B๋ฅผ ์ ๊ณตํ๋ค. |
span | ๊ฑธ์น๋ค. ๊ฐ๋ก์ง๋ฅด๋ค. |