ํฐ์คํ ๋ฆฌ ๋ทฐ
[SPRING]์คํ๋ง ์ ๋ฌธ - ์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๋ถํธ, ์น MVC, DB ์ ๊ทผ ๊ธฐ์ ์น์ 7 (AOP)
chaewonni 2024. 1. 1. 20:09๐กAOP
๐ปAOP๊ฐ ํ์ํ ์ํฉ
public Long join(Member member) {
//๊ฐ์ ์ด๋ฆ์ด ์๋ ์ค๋ณต ํ์X
// Optional<Member> result = memberRepository.findByName(member.getName());
// result.ifPresent(m -> {
// throw new IllegalStateException("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค.");
// });
long start = System.currentTimeMillis();
try{
validateDuplicateMember(member); //์ค๋ณต ํ์ ๊ฒ์ฆ
memberRepository.save(member);
return member.getId();
} finally {
long finish = System.currentTimeMillis();
long timeMs = finish - start;
System.out.println("join = " + timeMs);
}
}
ํ์๊ฐ์ ์ ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ถ๋ ฅํด์ฃผ๋ ์ฝ๋๋ฅผ ์์๊ฐ์ด ์์ฑํ๊ณ ,
Test ์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ด ๋ช ms๊ฐ ๊ฑธ๋ฆฌ๋์ง ์์์๊ฐ์ด ๋์จ๋ค.
๐ป์๊ฐ ์ธก์ ๋ฌธ์ ์
๐กAOP ์ ์ฉ
AOP: Aspect Oriented Programming
๊ณตํต ๊ด์ฌ ์ฌํญ๊ณผ ํต์ฌ ๊ด์ฌ ์ฌํญ์ ๋ถ๋ฆฌํ๋ค.
package hello.hellospring.aop;
import org.aopalliance.intercept.Joinpoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@Aspect
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();
}finally {
long finish = System.currentTimeMillis();
long timeMs = finish - start;
System.out.println("END: " + joinPoint.toString() +" " + timeMs + "ms");
}
}
}
aop๋ผ๋ ํจํค์ง๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์ TimeTraceAop class๋ฅผ ๋ง๋ค์ด ์์ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์๋ค.
@Bean
public TimeTraceAop timeTraceAop(){
return new TimeTraceAop();
}
aop๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด spring bean์ผ๋ก ๋ฑ๋กํด์ฃผ์๋ค.
๐ป์๊ฐ ์ธก์ AOP ์คํ
์คํํ๋ฉด ์์ ๊ฐ์ด ๋ฉ์๋๋ง๋ค ์คํ ์๊ฐ์ ์ ์ ์๋ค.
๐ป AOP ๋์ ๋ฐฉ์ ์ค๋ช
AOP๋ฅผ ์ ์ฉํ๋ฉด ๊ฐ์ง memberService ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ด๋ฅผ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค. ๊ฐ์ง memberService ํ๋ก์๋ ์ค์ memberService์ ๋ฉ์๋ ํธ์ถ์ ๊ฐ๋ก์ฑ์ด ์ถ๊ฐ ๋์์ ์ํํ ๋ค, joinPoint.proceed()๋ฅผ ํตํด ์๋ณธ memberService ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. ์ด๋ก ์ธํด memberController๊ฐ ํธ์ถํ๋ ๊ฒ์ ์ค์ memberService๊ฐ ์๋ ๊ฐ์ง memberService์ด๋ฉฐ, AOP๋ฅผ ํตํด ์ถ๊ฐ์ ์ธ ๋์์ ์ ์ฉํ ์ ์๋ค.
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- ํ์ํํด
- SQL
- ์คํ๋ง ๋ถ๋งํฌ
- ๋ก๊น
- ์นMVC
- EnumType.ORDINAL
- ํ์ด์ฌ
- elasticsearch
- DP
- ์ธํ ๋ฆฌ์ ์ด
- ์ง์ฐ๋ก๋ฉ
- ์๋ฐ ์คํ๋ง
- ์๋ฐ
- ๋ฐฑ์ค ํ์ด์ฌ
- SQL ๋ ๋ฒจ์
- ๋ก๊ทธ์์
- ์ค์์
- ์น MVC
- ๋ฐฑ์ค
- ์ปค๋ฎค๋ํฐ
- ์คํ๋ง
- ํ๋ก ํธ์๋
- ๋น์์
- SQLD
- ์คํ๋ง๋ถํธ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ์์
- JPA
- ์คํ๋ง ์ปค๋ฎค๋ํฐ
- ๋ถ๋งํฌ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |