김영한의 스프링 입문

이상훈·2023년 5월 3일
0

정리할것

  1. 단축키

  2. 목차만들기

  • 큰주제
  • 소주제 몇개있는지
  1. 간단한 방법이나 메커니즘, 실행 순서등

  2. 코드는 깃허브에서 보는식으로 진행

  3. 시나리오, 스토리를 통해 외우자

실무 커리부터 달리자

프로젝트 환경설정

프로젝트 생성

springboot 3.0.6
jdk 17

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

localhost:8080 접속해보기



IntelliJ JDK 설치 확인

Windows: File Project Structure(Ctrl+Alt+Shift+S)
Mac: File Project Structure (⌘;)

Windows: File Settings(Ctrl+Alt+S)
Mac: IntelliJ IDEA | Preferences(⌘,)

라이브러리 살펴보기

Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다.

view 환경설정

정적 페이지를 index.html에 올려본다.

thymeleaf를 사용해서 동적페이지를 만들어본다.

터미널에서 빌드하고 실행하기

서버에 배포할때 서버에 java -jar <jar파일>을 넣어주면 작동한다.

스프링 웹 개발 기초

정적 컨텐츠

그냥 정적인 컨텐츠를 보여준다.
static 폴더에 정적인 파일을 다루는것을 말한다.

MVC와 템플릿 엔진

정적인 컨텐츠에 뷰리졸버를 통해서 처리를 해서 보여준다.

API

객체를 반환한다. 출력형식은 json이 통상적임.


객체를 반환하면 객체가 JSON으로 변환됨
xml방식은 요즘은 잘 사용안하고 json방식을 사용한다.

@ResponseBody 를 사용하면 뷰 리졸버( viewResolver )를 사용하지 않음
대신에 HTTP의 BODY에 문자 내용을 직접 반환(HTML BODY TAG를 말하는 것이 아님)

회원 관리 예제 - 백엔드 개발

비즈니스 요구사항 정리

단순한 비즈니스 구현하기
db가 선정이 안됨 성능우선인지 일반적 관계형 db인지 nosql인지


레포지토리는 인터페이스로 한다. db선정이 안되서 그래서 메모리 기반 저장소를 만들거임

id는 시스템이 저장하는 id
일단 getter setter 함

Optional null일 경우 대체하기 위해 사용

private static Map<Long, Member> store = new HashMap<>();

동시성문제가 있을수 있다.
sequence는 0, 1, 2등을 생성하는 역할

name은 고객이 정한 이름

0개의 댓글