Spring 입문25 스프링MVC 입문25 AOP AOP -- Aspect Oriented Programming(관점 지향 프로그래밍) 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 분리 aop / TimeTraceAop package com.danny.learningspring.aop; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @Slf4j @Aspect public class TimeTraceAop { @Around("execution(*.. 2022. 11. 14. 스프링MVC 입문24 AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? MemberService package com.danny.learningspring.service; import com.danny.learningspring.domain.Member; import com.danny.learningspring.repository.MemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import .. 2022. 11. 14. 스프링MVC 입문23 스프링 데이터 JPA 스프링 부트와 JPA만 사용해도 개발 생산성이 정말 많이 증가하고, 개발해야할 코드도 확연히 줄어듬 여기에 스프링 데이터 JPA를 사용하면, 기존의 한계를 넘어, 리포지토리에 구현 클래스 없이 인터페이스 만으로 개발을 완료할 수 있음 반복 개발해온 기본 CRUD 기능도 스프링 데이터 JPA가 모두 제공 스프링 부트와 JPA라는 기반 위에, 스프링 데이터 JPA라는 환상적인 프레임워크를 더하면 개발이 정말 즐거워짐 지금까지 조금이라도 단순하고 반복이라 생각했던 개발 코드들이 확연하게 줄어듬 개발자는 핵심 비즈니스 로직을 개발하는데, 집중할 수 있음 실무에서 관계형 데이터베이스를 사용한다면 스프링 데이터 JPA는 이제 선택이 아니라 필수 SpringDataJpaMemberReposito.. 2022. 11. 14. 스프링MVC 입문22 JPA JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다. JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. JPA를 사용하면 개발 생산성을 크게 높일 수 있다. build.gradle / JPA 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' application.properties / JPA 설정 # Jpa spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=none spring.jpa.show-sql=true -- console창에 쿼리문 출력 spring.jpa.h.. 2022. 11. 14. 스프링MVC 입문21 스프링 JdbcTemplate 순수 Jdbc와 동일한 환경설정을 하면 됨 스프링 JdbcTemplate과 MyBatis 같은 라이브러리는 JDBC API에서 본 반복 코드를 대부분 제거해줌 SQL은 직접 작성해야 함 JdbcTemplateMemberRepository package com.danny.learningspring.repository; import com.danny.learningspring.domain.Member; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlPar.. 2022. 11. 14. 스프링MVC 입문20 스프링 통합 테스트 스프링 컨테이너와 DB까지 연결한 통합 테스트를 진행 MemberServiceIntegrationTest package com.danny.learningspring.service; import com.danny.learningspring.domain.Member; import com.danny.learningspring.repository.MemberRepository; import com.danny.learningspring.repository.MemoryMemberRepository; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.T.. 2022. 11. 14. 이전 1 2 3 4 5 다음