TIL 20일차(2021-09-06)

엄진환·2021년 9월 6일
0

오늘 한일

1. Spring EmbeddDataBase 실습 코드 작성

  • Spring EmbeddDataBase
    • 런타임의 데이터 메모리 상에 저장되는 DB
    • Map과 같은 컬렉션에 데이터를 저장하여 안정적인 방법으로 CRUD가 가능하고 코드의 중복을 줄일 수 있다.

2. Spring NamedParameterJdbcTemplate 실습 코드 작성

  • JdbcTemplate이 문자열에 "?"를 통해서 인자를 받는 방식이었지만,
  • NamedParameterJdbcTemplate에서는 ":key값"으로 Map<key,value>에 저장한 value를 인자로 줄 수 있다.
  • Map 콜렉션을 통해서 쿼리 문자열에 사용될 데이터를 모아서 처리할 수 있다.

3. Proxy 실습 코드 작성

  • InvocationHandler를 상속받는 클래스에서 method의 전후처리 코드를 작성하고
  • 실제 사용할 인터페이스와 InvocationHandler 상속 받은 클래스로 Proxy 객체를 생성
  • 생성한 객체로 메소드 호출 시 전후처리가 포함된 메소드를 실행하는 것을 확인 가능

4. AoP 주요 용어 및 실습 코드 작성

  • AoP(Aspect-Oriented Programming)
    • Aspect 지향으로 프로그래밍하는 것
    • 위 실습의 proxy를 spring에서 제공하는 Aspect 어노테이션의 클래스로 각 기능마다 부가 기능을 추가하여 작동시키는 것
  • Target : 핵심 기능을 가진 모듈(전후처리가 필요한 인터페이스)
  • JoinPoint : Advice를 적용할 위치(타겟의 각 메소드 위치)
  • Pointcut : Target의 메서드를 선별하는 조건(정규표현식)
  • Aspect
    • Pointcut + Advice를 모은 클래스
    • Spring에서 Aspect를 Bean으로 등록하여 사용
  • Advice
    • 타겟에 특정 조건인 조인포인트에 제공할 부가 기능
    • @Before, @After, @Around 등이 있음
  • weaving
    • 타겟의 조인포인트에 어드바이스를 적용하는 과정

5. 트랜젝션 전파와 격리

  • 트랜젝션 전파
    • @Transactional 통해서 다음 메소드로 넘어갈 때 그 기능과 트랜젝션을 묶을지 여부를 정하는 것
  • 트랜젝션 격리
    • 특정 트랜젝션이 다른 트랜젝션에서 변경이 된 데이터를 읽을 수 있는지 단계를 통하여 설정하는 것

6. JVM JIT Compiler, Interpreter 조사

내일 할일

1. DNS 동작 방식 조사

  • 조사 후 글 작성

2. Command-line Application 단위 테스트 코드 작성

  • 지속적으로 클래스 추가 시 만들기

3. Command-line Application 테이블 추가

  • Jdbc template 활용하여 구현
    • Customer 테이블 정의 및 추가
    • Voucher 테이블 CRUD

느낀 점

오늘 한 주치 밀린 스프링 공부를 하면서 실습 코드도 많이 짜보고 시행착오를 겪으면서 많이 배웠다. 내일은 과제 코드를 통해서 자유롭게 코딩해보고 Spring Annotation 작동에 대해서 더 익숙해져야겠다.

profile
개발 공부 블로그

0개의 댓글