Arthur's Blog
AOP @Around ์ด๋ ธํ ์ด์ ๋ณธ๋ฌธ
๐ ์ ์
Advice์ ํ ์ข ๋ฅ๋ก ํต์ฌ ๊ด์ฌ์ฌ์ ์คํจ์ฌ๋ถ์ ์๊ด์์ด ์ ํ๋ก ์คํ๋๋๋ก ํ๋ Advice์ด๋ค.
Advice๋ ์ค์ง์ ์ผ๋ก ์ด๋ค ์ผ์ ํด์ผํ ์ง์ ๋ํ ๊ฒ, ์ฆ ์ค์ง์ ์ธ ๋ถ๊ฐ๊ธฐ๋ฅ์ ๋ด์ ๊ตฌํ์ฒด์ด๋ค.
๐ ์ฌ์ฉ๋ฒ
Pointcut๋ฅผ ์ ๋ฌํด์ฃผ์ด์ผ ํ๋ค. Pointcut๋ ํก๋จ๊ด์ฌ์ฌ(๋ถ๊ฐ๊ธฐ๋ฅ)์ด ์ ์ฉ๋ joinPoint๋ค์ ์ ์ํ ๊ฒ์ด๋ค.
1๏ธโฃ execution
@Pointcut(“execution(์ ๊ทผ์ ์ด์, ๋ฐํํ ํจํค์งํฌํจ ํด๋์ค ๊ฒฝ๋ก ๋ฉ์๋ ํ๋ผ๋ฏธํฐ)”)
- execution(* *(..))๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๊ฐ ๊ฐ์ ์๊ด X
- ์ ๊ทผ์ ์ด์, ๋ฐํํ ๋ชจ๋ ์๊ด X, ์ด๋ ํ ๊ฒฝ๋ก์ ์กด์ฌํ๋ ํด๋์ค๋ ์๊ดํ์ง ์๊ณ ์ ์ฉ.
- execution(* test.spring..*(..))
- ์ ๊ทผ์ ์ด์, ๋ฐํํ ๋ชจ๋ ์๊ด X, test.spring ํ์ ํจํค์ง, ํด๋์ค ์ ์ฉ, ๋ฉ์๋๋ช ์๊ด X, ํ๋ผ๋ฏธํฐ ์๊ด X
2๏ธโฃ within
ํจํค์ง ๋ด์ ๋ชจ๋ ๋ฉ์๋์ ์ ์ฉํ ๋ ์ฌ์ฉ.
@Pointcut(“within(Class ๊ฒฝ๋ก)”)
- within(com.java.ex.*)
- com.java.ex. ํ์์ ๋ชจ๋ ํด๋์ค, ๋ชจ๋ ๋ฉ์๋
- within(com.java.ex..*)
- com.java.ex. ํจํค์ง์ ํ์ ํจํค์ง๋ฅผ ํฌํจํ ๋ชจ๋ ํด๋์ค, ๋ฉ์๋
3๏ธโฃ bean
ํด๋น bean id๋ฅผ ๊ฐ์ง๊ณ ์๋ bean์ ๋ชจ๋ ๋ฉ์๋์ ์ ์ฉ
@Pointcut(“bean(bean id)”)
- bean(car)
- car๋ผ๋ bean id๋ฅผ ๊ฐ์ง๊ณ ์๋ bean์ ์ ์ฉ
4๏ธโฃ ์ปค์คํ ์ด๋ ธํ ์ด์
@Pointcut(“@annotation(์ด๋ ธํ ์ด์ ๋ช )”)
'Backend > Spring Boot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
static ๋ณ์์ @Value ์ฌ์ฉํ๊ธฐ (0) | 2023.06.29 |
---|---|
@Value๊ฐ์ด null๋ก ๋ค์ด๊ฐ ๋ ํด๊ฒฐ๋ฒ (0) | 2023.06.29 |
@Bean vs @Component (0) | 2023.06.27 |
ํ ์คํธ ์ Spring Security ์ธ์ฆํ ์ ์๋ ์ด๋ ธํ ์ด์ (0) | 2023.06.27 |
Gradle Build ์ต์ ํ (0) | 2023.06.27 |