● 코딩학원 공부 내용정리
1. 어제에 이어서 AOP에 대해 학습 중. pointcut expression.Advice, Pointcut, Weaving 등 용어 정리!
2. pointcut은 대상을 특정하기 위한 식이다.
3. Aspect는 Advice와 Pointcut으로 구성된다.
4. AOP를 쉽게 이해하면... 특정 부분(target)을 잘라내서 유지 보수할 수 있다.
5. 계속 오류가났다. main메서드를 빼먹었다. 이런 실수 용납할 수 없지
6. LoggingAdvice 코드. Aspect에는 Advice와 pointcut이 들어있다. 포인트컷은 대상을 특정하기 위한 식이다. "execution~"에서 부가기능이 적용될 메서드를 지정해주고 있다. 지금 하고 있는 것을 한마디로 말하면 특정한 관점으로 어떤 부분에 새로운 기능을 추가해주는 것이다. 추상적이긴 하지만 직관적으로 이해해보자. advice란 새로운 작업을 말한다.
package com.earth.work.app;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class LoggingAdvice {
@Around("execution(* com.earth.work.app.MyMath.add*(..))") //pointcut - 부가기능이 적용될 메서드 패턴
public Object methodLog(ProceedingJoinPoint pjp) throws Throwable {
long start = System.currentTimeMillis();
System.out.println("");
System.out.println("<< (start) ");
Object result = pjp.proceed(); //target의 메서드 호출
System.out.println((System.currentTimeMillis() - start) + "ms");
System.out.println("핵심기능 결과 result = " + result);
System.out.println("(end) >>");
System.out.println("");
return result;
}
}
출력 결과 : add가 붙은 메서드에만 부가기능이 추가됐다.
7. Service Layer이 뭐지? DAO와 관련이 있는 것 같은데?
8. @ContextConfiguration으로 Bean을 생성하고 @Autowired로 객체를 주입했다. A1DaoTest 클래스에 객체를 주입한 것이다.
package com.earth.work;
import javax.sql.DataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.earth.work.app.service.A1Dao;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/**/root-context.xml")
public class A1DaoTest {
@Autowired
A1Dao a1Dao;
@Autowired
DataSource ds;
@Test
public void insertTest() {
a1Dao.insert(1, 100);
a1Dao.insert(2, 200);
}
}
9. 컨트롤 + T 누르며 상속관계를 확인할 수 있다.
10. 뭔지모르겠지만... 중한 것 같아 캡쳐.
11. 비즈니스 로직이 실행될 수 있도록 비즈니스 레이어를 만들어줘야함. 계좌이체 하다가 오류가나면 롤백이 되어야 한다. 오케이 역할은 알겠는데 좀더 자세히 정리해보자.
Service Layer에 대해 좀 찾아봐야겠다.
'코딩 학원(국비지원)' 카테고리의 다른 글
70일차 코딩학원. 오류하나 덕분에 하루종일 고민함 (0) | 2023.04.28 |
---|---|
69일차 코딩학원 (0) | 2023.04.27 |
67일차 코딩학원 (0) | 2023.04.25 |
66일차 코딩학원 (0) | 2023.04.24 |
65일차 코딩학원 (1) | 2023.04.21 |