위 책을 따라 스프링 부트와 AWS에 대해 배워보려고 한다. 그래들 프로젝트를 스프링 부트 프로젝트로 변경하기 학습을 위해 스프링 이니셜라이저를 통해 진행하지 않는다. build.gradle plugins { // 이 3개는 자바와 스프링부트를 사용하기 위한 필수 플러그인 id 'org.springframework.boot' version '2.4.1' // RELEASE 삭제 // 스프링 부트의 의존성들을 관리해주는 플러그인 id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } group 'com.ewok.study' version '1.0.4-SNAPSHOT-'+new Date().format("yyyyMMddHHmmss"..
AOP가 필요한 상황 모든 메서드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? MemberService 회원 조회 시간 측정 추가 @Transactional public class MemberService { private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } /** * 회원 가입 */ public Long join(Member member) { ..
JPA(Java Persistence API) JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해 준다. JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. JPA를 사용하면 개발 생산성을 크게 높일 수 있다. JPA를 사용하기 위해서는 build.gradle 파일에 관련 라이브러리를 추가해야 한다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springf..
스프링 통합 테스트 스프링 컨테이너와 DB까지 연결한 통합 테스트 진행 MemberServiceTest를 복사해서 MemberServiceIntegrationTest를 만든다. package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api...
DB 설정 MariaDB가 설치되어 있어서 이것으로 진행할 것이다. create table member ( id bigint auto_increment, name varchar(255), primary key (id) ); insert into member(name) values ('spring'); auto_increment는 값을 세팅하지 않고 insert하면 db가 자동으로 값을 채워준다. 순수 JDBC 환경설정 build.gradle파일에 jdbc, db 관련 라이브러리를 추가해야 한다. spring.datasource.url=jdbc:mariadb://localhost:3306 spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring..
회원 웹 기능 - 홈 화면 추가 package hello.hellospring.controller; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @Controller public class MemberController { private MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService..