2024/11 11

2장. MVC 패턴 이해와 실습

2.1 뷰 템플릿과 MVC 패턴뷰 템플릿화면을 담당하는 기술, 웹 페이지(View)를 하나의 틀(Template)로 만들고 여기에 변수를 삽입해 서로 다른 페이지로 보여줌1장에서 스프링 부트 프로젝트를 만들 때 추가한 Mustache 도구가 뷰 템플릿을 만드는 도구임 MVC 패턴화면을 담당하는 뷰 템플릿을 '뷰'라고도 부름컨트롤러(Controller)는 클라이언트의 요청에 따라 서버에서 처리하는 역할모델(Model)은 데이터를 관리하는 역할 웹 페이지를 화면에 보여주고(View), 클라이언트의 요청을 받아 처리하고(Controller), 데이터를 관리하는(Model) 역할을 나누는 기법을 MVC 패턴(Model-View-Controller Pattern)이라고 함  2.2 MVC 패턴을 활용해 뷰 템플릿..

1장. 스프링 부트 시작하기

1.1 스프링 부트란자바 웹 프로그램을 쉽고 빠르게 만들기 위한 도구 1.2 스프링 부트 개발 환경 설정하기개발 환경 설정 과정1. JDK (자바 코드의 번역과 실행을 담당하는 자바 개발 도구) 2. IDE (ex. 이클립스, 인텔리제이) 설치3. 스프링 부트 프로젝트 만들기  JDK 설치하기1. cmd에 java -version으로 설치되어 있는지 확인2. OpenJDK 설치 https://adoptium.net/temurin/releases 에 접속하여 다운로드Windows/x64/JDK/17 - LTS3. install4. JDK 잘 설치되었는지 1. 과정으로 확인  IDE 설치하기https://www.jetbrains.com/ko-kr/idea/download 에 접속하여 다운로드 (인텔리제이) ..

섹션8. AOP

AOP가 필요한 상황모든 메소드의 호출 시간을 측정하고 싶다면?공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? MemberService 회원 조회 시간 측정 추가package hello.hellospring.service;import hello.hellospring.domain.Member;import hello.hellospring.repository.MemberRepository;import hello.hellospring.repository.MemoryMemberRepository;import org.springframework.beans.factory.annotation.Autowired;i..

섹션7. 스프링 DB 접근 기술

H2 데이터베이스 설치개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공https://www.h2database.com 에서 다운로드 h2.bat 입력하여 실행실행 후 화면jdbc:h2:~/test (최초 한번)연결 버튼 클릭 ~/test.mv.db 파일 생성 확인 jdbc:h2:tcp://localhost/~/test 입력하여 연결  테이블 생성하기 ctrl + Enter 로 실행 모두 지운 상태로 MEMBER 클릭하면 자동으로 SELECT * FROM MEMBER 입력됨 insert into member(name) values('spring1')insert into member(name) values('spring2') 입력 후 결과 테이블 관리를 위해 프로젝트 루트에 sql/ddl.sql 파..

섹션6. 회원 관리 예제 - 웹 MVC 개발

회원 웹 기능 - 홈 화면 추가controller 패키지에 HomeController 클래스 생성package hello.hellospring.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class HomeController { @GetMapping("/") public String home(){ return "home"; }}  template/home.html 생성 Hello Spring 회원 기능 회원 가입 ..

섹션5. 스프링 빈과 의존관계

컴포넌트 스캔과 자동 의존관계 설정회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계 준비 회원 컨트롤러에 의존관계 추가package hello.hellospring.controller;import hello.hellospring.service.MemberService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;@Controllerpublic class MemberController { private final MemberService memberService; @Autowired public MemberContro..

섹션4. 회원 관리 예제 - 백엔드 개발

비즈니스 요구사항 정리데이터: 회원 ID, 이름기능: 회원 등록, 조회아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 일반적인 웹 애플리케이션 계층 구조컨트롤러: 웹 MVC의 컨트롤러 역할서비스: 핵심 비즈니스 로직 구현, ex) 회원 중복 가입 불가 로직리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리도메인: 비즈니스 도메인 객체, ex) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리 클래스 의존관계아직 데이터 저장소가 선정되지 않아서, 우선 인터베이스로 구현 클래스를 변경할 수 있도록 설계데이터 저장소는 RDB, NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용단순한..

섹션3. 스프링 웹 개발 기초

정적 컨텐츠스프링 부트 정적 컨텐츠 기능파일을 그대로 웹브라우저에 내려줌 resources/static/hello-static.html 생성 정적 컨텐츠 입니다.  실행http://localhost:8080/hello-static.html  정적 파일이 그대로 반환됨  정적 컨텐츠 이미지 내장 톰캣 서버가 요청을 받고 스프링에 넘김스프링은 먼저 컨트롤러 쪽에서 존재하는지 확인→ 없으면, resources:static/hello-static.html 찾음(컨트롤러가 우선 순위를 가짐)  MVC와 템플릿 엔진MVC : Mdoel, View,Controller (과거에는 컨트롤러와 뷰가 따로 분리되어 있지 않았고 뷰에 모든 걸 다 했었음 - 모델1 방식) 뷰는 화면을 그리는 데 집중컨트롤러와 모델 관련..

섹션2. 프로젝트 환경설정

프로젝트 생성사전준비물Java 설치IDE: IntelliJ 또는 Eclipse 설치https://start.spring.io/ 스프링 부트 스타터 사이트를 이용해 스프링 프로젝트 생성 해당 사이트에서 아래 사진과 같이 설정한 후, GENERATE 눌러 다운받음 ProjectGradle, Maven : 필요한 라이브러리를 가져오고, 빌드하는 라이프 사이클까지 관리해주는 툴Gradle을 많이 쓰는 추세 Spring BootSNAPSHOT, M1 이런 것들은 아직 정식 릴리즈 버전X Project MetadataGroup: 보통 기업 도메인명을 주 적음Artifact: build되어 나올 때의 결과물 Dependencies어떤 라이브러리를 가져올지 결정 압축 푼 뒤, IntelliJ에서 build.gradle..

8장 데이터베이스 설계

34강. 데이터베이스 설계1. 데이터베이스 설계데이터베이스를 설계한다 : 데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 정의하는 것'스키마 설계' 라 불리기도 함 - 논리명과 물리명테이블 설계시 테이블 정의서나 설계도 등의 문서를 작성하는 경우가 많음보통 문서의 양식은 DESC 명령에 따라 표시되는 결과와 비슷 테이블을 설계할 때, 하나의 테이블에 대해 두 개의 이름을 지정할 때가 있음물리명 : 데이터베이스에서 사용될 이름, CREATE TABLE에 지정하는 이름논리명 : 테이블의 '설계상 이름'물리명은 데이터베이스 시스템 규칙에 따라 제약O→ 물리명만으로는 의미가 전달되지 않는 경우가 있어 논리명 필요논리명은 해당 테이블을 실제로 부를 때 사용하는 이름 - 자료형테이블의 열에..