Spring ์ ๋ฌธ / 7. AOP
by rlaehddnd04221. AOP๊ฐ ํ์ํ ์ํฉ
EX) ๋ชจ๋ ๋ฉ์๋์ ํธ์ถ ์๊ฐ์ ์ธก์ ํ๊ณ ์ถ์ ๋
package hello.hellospring.service;
@Transactional
public class MemberService {
/**
* ํ์๊ฐ์
*/
public Long join(Member member) {
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 + "ms");
} }
/**
*์ ์ฒด ํ์ ์กฐํ
*/
public List<Member> findMembers() {
long start = System.currentTimeMillis();
try {
return memberRepository.findAll();
} finally {
long finish = System.currentTimeMillis();
long timeMs = finish - start;
System.out.println("findMembers " + timeMs + "ms");
} }
}
๋ฌธ์
- ํ์๊ฐ์ , ํ์ ์กฐํ์ ์๊ฐ์ ์ธก์ ํ๋ ๊ธฐ๋ฅ์ ํต์ฌ ๊ด์ฌ ์ฌํญ์ด ์๋๋ค.
- ์๊ฐ์ ์ธก์ ํ๋ ๋ก์ง์ ๊ณตํต ๊ด์ฌ ์ฌํญ์ด๋ค.
- ์๊ฐ์ ์ธก์ ํ๋ ๋ก์ง๊ณผ ํต์ฌ ๋น์ฆ๋์ค์ ๋ก์ง์ด ์์ฌ์ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค.
- ์๊ฐ์ ์ธก์ ํ๋ ๋ก์ง์ ๋ณ๋์ ๊ณตํต ๋ก์ง์ผ๋ก ๋ง๋ค๊ธฐ ๋งค์ฐ ์ด๋ ต๋ค.
- ์๊ฐ์ ์ธก์ ํ๋ ๋ก์ง์ ๋ณ๊ฒฝํ ๋ ๋ชจ๋ ๋ก์ง์ ์ฐพ์๊ฐ๋ฉด์ ๋ณ๊ฒฝํด์ผ ํ๋ค.
2. AOP ์ ์ฉ
AOP: Aspect Oriented Programming
๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ.
๊ณตํต ๊ด์ฌ ์ฌํญ vs ํต์ฌ ๊ด์ฌ ์ฌํญ ๋ถ๋ฆฌ
package kdo6301.spring0.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
public class TimeTraceAop {
// ์ ์ฉ ๋ฒ์
@Around("execution(* kdo6301.spring0..*(..))")
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);
}
}
}
@Around ์ด๋ ธํ ์ด์ ์ ํตํด ์ ์ฉ๋ฒ์๋ฅผ ์ค์ ํ ์ ์๋ค.
'๐ Backend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring / ์์ ์๋ฐ๊ธฐ๋ฐ ์์ ( spring framework no use ) (0) | 2023.01.24 |
---|---|
[Spring] OOP 5๊ฐ์ง ์ค๊ณ์์น (2) | 2023.01.23 |
Spring ์ ๋ฌธ / 6. DB ์ ๊ทผ ๊ธฐ์ (0) | 2023.01.19 |
Spring ์ ๋ฌธ / 5. ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ (1) | 2023.01.17 |
Spring ์ ๋ฌธ / 4. ์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ (0) | 2023.01.17 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422