1. 문제 상황 - 가짜 user1 객체로 로그인 설정을 했을 때 오류가 발생했다. @Test @DisplayName("user1로 로그인 후 프로필페이지에 접속하면 user1의 이메일이 보여야 한다.") void t3() throws Exception { // WHEN // GET / ResultActions resultActions = mvc .perform( get("/member/profile") .with(user("user1").password("1234").roles("user")) ) .andDo(print()); // THEN // 안녕 resultActions .andExpect(status().is2xxSuccessful()) .andExpect(handler().handlerType..
(인프런) 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 공부하고 리뷰한 글입니다. 1. AOP 적용 AOP: Aspect Oriented Programming 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 분리 1. 시간 측정 AOP 등록 package hello.hellospring.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component..
(인프런) 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 공부하고 리뷰한 글입니다. 1. AOP가 필요한 상황 1) 모든 메소드의 호출 시간을 측정하고 싶을 때 2) 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 3) 회원 가입 시간, 전체 회원 조회 시간을 측정하고 싶을 때 1. MemberService 회원 조회 시간 측정 추가 @Transactional public class MemberService { ... /** * 회원 가입 */ public Long join(Member member) { long start = System.currentTimeMillis(); // 회원가입 시작 시각 try {..
(인프런) 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 공부하고 리뷰한 글입니다. 스프링 DB 접근 기술 4가지 방식대로 차례로 진행할 예정이다. 1. 순수 JDBC 2. JDBCTemplate 3. JPA 4. 스프링 데이터 JPA 1. 스프링 데이터 JPA를 이용한 코드 작성 스프링 부트와 JPA만 사용해도 개발 생산성이 정말 많이 증가하고 개발해야할 코드도 확연히 줄어든다. 여기에 스프링 데이터 JPA를 사용하면 기존의 한계를 넘어 리포지토리에 구현 클래스 없이 인터페이스 만으로 개발을 완료할 수 있다. 그리고 반복 개발해온 기본 CRUD 기능도 스프링 데이터 JPA가 모두 제공한다. 스프링 부트와 JPA라는 기반 위에, 스프링 데이터 JPA라는 환상적인 프..
(인프런) 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 공부하고 리뷰한 글입니다. 스프링 DB 접근 기술 4가지 방식대로 차례로 진행할 예정이다. 1. 순수 JDBC 2. JDBCTemplate 3. JPA 4. 스프링 데이터 JPA 1. JPA 장점 1. 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다. 2. SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. 3. 개발 생산성을 크게 높일 수 있다. 2. JPA를 이용한 코드 작성 1. build.gradle 파일에 JPA, h2 데이터베이스 관련 라이브러리 추가 jdbc를 사용하지 않으므로 아래와 같이 주석 처리하거나 삭제하고 jpa 관련 라이..
(인프런) 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 공부하고 리뷰한 글입니다. 스프링 DB 접근 기술 4가지 방식대로 차례로 진행할 예정이다. 1. 순수 JDBC 2. JDBCTemplate 3. JPA 4. 스프링 데이터 JPA 1. 스프링 JdbcTemplate 회원 리포지토리 1) repository 패키지에 JdbcTemplateMemberRepository 클래스 생성 2) JdbcTemplateMemberRepository 코드 작성 1. 생성자(Constructor) public class JdbcTemplateMemberRepository implements MemberRepository{ private final JdbcTemplate jdbc..
(인프런) 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 공부하고 리뷰한 글입니다. 이전에 했던 회원 서비스 테스트(MemberServiceTest) 같은 경우는 실제로 순수 자바로만 테스트 하는 단위 테스트 였다. 하지만 이전에 했던 회원 서비스 테스트가 궁금하다면 여기 1. 회원 서비스 스프링 통합 테스트 1) Test/service 패키지에 MemberServcieTest를 복사한 MemberServiceIntegrationTest 클래스 생성 2) MemberServiceIntegrationTest 클래스 위에 @SpringBootTest 추가 3) @BeforeEach 삭제 → @Autowired 로 스프링 컨테이너에서 메모리 서비스, 메모리 리퍼지토리 사..
(인프런) 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 공부하고 리뷰한 글입니다. 스프링 DB 접근 기술 4가지 방식대로 차례로 진행할 예정이다. 1. 순수 JDBC 2. JDBCTemplate 3. JPA 4. 스프링 데이터 JPA 1. 환경 설정 1. build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' 2. application.properties 파일에 스프링 부트 데이터베이스 연결 설정 spring.datasource.url=jdbc:h2:tcp://lo..