목록Spring (29)
mojo's Blog
AOP ※ AOP가 필요한 상황 모든 메서드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? 1. MemberService 의 메서드들 중, join 메서드가 몇 ms 에 수행되는지를 알아내기 위해 다음과 같이 코드를 수정한다. /* * 회원 가입 */ public Long join(Member member){ // 같은 이름이 있는 중복 회원 x long start = System.currentTimeMillis(); try{ validateDuplicateMember(member); //중복 회원 검증 memberRepository.save(member); re..
JPA 1. build.gradle 에서 다음과 같이 코드를 추가해준다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // new! runtimeOnly 'com.h2database:h2' testImplementation 'org.springframework.boot:spring-boot-starter-test' } 2. resources 폴더 아래의 ..
H2 데이터베이스 1. H2 콘솔에 접속한다. 2. 다음과 같이 member 테이블을 create 해준다. create table member ( id bigint generated by default as identity, name varchar(255), primary key(id) ) generated by default as identity : 만약 id 값이 null 일 경우 db가 자동으로 id 값을 채워주도록 한다. 3. 실행 버튼을 누르면 다음과 같이 member 테이블이 만들어진다. 4. 다음과 같이 member 테이블에 값을 insert 해보도록 한다. insert into member(name) values('spring') 5. 여러 값들을 삽입한 후 member 테이블의 값들을 s..
회원 웹 기능 - 홈 화면 추가 1. controller 폴더 아래에 HomeController 클래스를 형성한 후에 다음과 같이 코드를 작성한다. package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home(){ return "home"; } } 2. [resources] -> [templates] 폴더 아래에 home.html 을 작성한 후 다음과 같이 코드를 작성..
컴포넌트 스캔과 자동 의존관계 설정 1. controller 폴더 아래에 MemberController 클래스를 형성한다. 코드는 아래와 같이 작성한다. 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 final MemberService memberService; @Autowired public MemberCo..
비즈니스 요구사항 정리 데이터 : 회원ID, 이름 기능 : 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) ※ 일반적인 웹 애플리케이션 계층 구조 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체 ex) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 ※ 클래스 의존관계 아직 데이터 저장소가 선정되지 않았기 때문에 인터페이스로 먼저 구현 클래스를 변경할 수 있도록 설계 데이터 저장소는 RDB, NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정 개발 진행을 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소를 사용 회..