Spring 강의(24)
-
[25강]
AOP 적용 AOP : Aspect Oriented Programming - 관점 지향 프로그래밍 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 분리 이전처럼 모든 메소드마다 시간 측정 로직을 붙이는 게 아니라 원하는 메소드에 시간 측정 로직을 적용시킬 수 있다. 먼저 hello - hellospring2 밑에 aop란 패키지를 만들고 그 안에 TimeTraceAop 클래스를 만든다. TimeTraceAop.class 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 package hello.hellospring2.aop; import org.aspectj.lang.Proce..
2023.02.06 -
[24강]
AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? MemberService 회원 조회 시간 측정 추가 join 메소드와 findMembers 메소드를 실행하는데 소요되는 시간을 알아보자. System.currentTimeMillis() : 실행시간을 밀리세컨드 단위로 반환한다. join() 실행 결과 findMembers() 실행 결과 만약 여기서 메소드가 여러 개가 있다면 모든 메소드마다 이와 같은 로직을 더 추가해줘야 한다. MemberSerivce 전체 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ..
2023.02.06 -
[23강]
스프링 데이터 JPA 스프링 부트와 JPA만 사용해도 개발 생산성이 증가하고, 개발해야할 코드도 확연히 줄어든다. 여기에 스프링 데이터 JPA를 사용하면, 기존의 한계를 넘어 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있다. 그리고 반복 개발해 온 기본 CRUD 기능도 스프링 데이터 JPA가 모두 제공한다. 앞의 JPA 설정을 그대로 사용한다. 먼저 repository - SpringDataJpaMemberRepository를 만든다. SpringDataJpaMemberRepository.class 1 2 3 4 5 6 7 8 9 10 11 import hello.hellospring2.domain.Member; import org.springframework.data.jpa.rep..
2023.02.06 -
[22강]
JPA JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다. JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. JPA를 사용하면 개발 생산성을 크게 높일 수 있다. Jdbc -> JdbcTemplate : 반복적인 코드가 줄었다. 그러나 sql은 결국 작성을 해야했는데 jpa를 사용하면 sql도 jpa가 자동으로 처리해준다. 먼저 build.gradle에 라이브러리를 추가해줘야 한다. jdbc는 주석처리해주고 data-jpa를 추가해준다. 그리고 application.properties에 몇 가지 설정을 추가한다. spring.jpa.show-sql=true : jpa가 날리는 sql을 볼 수 있다. spring..
2023.02.06 -
[21강]
스프링 JdbcTemplate 순수 Jdbc와 동일한 환경설정을 하면 된다. -> build.gradle에서 넣은 코드 implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' 스프링 JdbcTemplate과 MyBatis 같은 라이브러리는 JDBC API에서의 반복 코드를 대부분 제거해준다. 하지만 sql은 직접 작성해야 한다. 먼저 repository - JdbcTemplateMemberRepository 클래스를 만든다. 순수 jdbc로 만들었을 때 이 길었던 코드를 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2..
2023.02.05 -
[20강]
스프링 통합 테스트 스프링 컨테이너와 db까지 연결한 통합 테스트를 진행해보자. 테스트쪽에서 MemberServiceTest를 복사해 MemberServiceIntergrationTest를 만든다. MemberServiceIntergrationTest.class 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 32 33 34 35 36 37 38 39 40 41 package hello.hellospring2.service; import hello.hellospring2.domain.Member; import hello.hellospring2.repository.MemberRepository; impor..
2023.02.05