📖/spring(김영한)

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 1일차

모팔구 2023. 7. 24. 12:11
728x90
반응형

섹션0 강의 소개

강의 소개

  • ❗️순서❗️
    1. 스프링 프로젝트 생성
    2. 스프링 부트로 웹 서버 실행
    3. 회원 도메인 개발
    4. 웹 MVC개발
    5. DB연동 - JDBC, JPA, 스프링 데이터 JPA
    6. 테스트 케이스 작성
  • ⭐️ 학습 방법 ⭐️: 처음부터 끝까지 직접 코딩

 

섹션1 프로젝트 환경설정

프로젝트 생성

  • 스프링 프로젝트를 만들 때 start.spring.io에서 만드는 것을 권장함
  • start.spring.io 설명
    • Project → Gradle-Groovy
    • Language → Java
    • Spring Boot → 괄호 없는 버전 중 택1
    • Project Metadata
      • Group → 기업명 등 작성
      • Artifact → 빌드 후 결과물
      • Name → 프로젝트명
      • Description → 필요 x
    • Dependencies
      • Spring Web
      • Thymeleaf: HTML을 만들어주는 템플릿 엔진. 종류 다양함
  • 인텔리제이에서 open 클릭 후 해당 프로젝트의 build.gradle 선택하면 프로젝트 세팅됨(ㄷㄷ)
  • @SpringBootApplication: 톰캣 웹서버를 내장하고 있어 자체적으로 서버를 띄우면서 SpringApplication.run()메서드에 정의된 클래스가 실행됨

라이브러리 살펴보기

  • 스프링 부트 라이브러리
    •  spring-boot-starter-web(서버)
      • spring-boot-starter-tomcat: 톰캣(웹서버)
      • spring-webmvc: 스프링 웹 MVC
    • spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
    • spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
      • spring-boot
        • spring-core
      • spring-boot-starter-logging
        • slf4j: 인터페이스
        • logback: 실제 로그를 어떻게 출력할건지
  • 테스트 라이브러리
    • junit: 테스트 프레임워크
    • mockito
    • assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    • spring-test: 스프링 통합 테스트 지원

View 환경설정

  • 스프링 부트가 제공하는 Welcome Page기능
    • 'static/index.html'을 만들어두면 웰컴페이지 기능을 한다
  • thymeleaf 템플릿 엔진: html의 모양을 바꿔줌
    • 웹 어플리케이션에서 첫번째 진입점이 Controller다. 클래스를 컨트롤러로 정의하려면 @Controller를 사용한다
      •  
      • @Controller public class HelloController { @GetMapping("hello") public String hello(Model model) { model.addAttribute("data", "hello!!"); return "hello"; } }
      • @GetMapping("경로"): uri에 해당 경로를 입력하면 자동으로 templates 폴더의 해당 페이지가 GET방식으로 매핑된다
      • return에 지정한 문자열과 같은 이름의 html 파일을 viewResolver가 templates 폴더에서 찾는다 그럼 model에서 addAttribute한 data를 해당 html파일로 보낸다 이때 data가 키, hello!!가 밸류값이 된다.
      • html 파일에서 ${data}을 입력하면 hello!!가 할당됨을 확인할 수 있다.
  •  thymeleaf의 동작 환경

 

 

728x90
반응형