본문 바로가기

코딩 학원(국비지원)

68일차 코딩학원

반응형

코딩학원 공부 내용정리


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