Springboot 환경설정

전영덕·2023년 4월 13일
0

Springboot

목록 보기
1/13

1. Framework 란?

  • '뼈대나 근간'을 이루는 코드들의 묶음
  • 프로그램의 기본 흐름이나 구조를 정하고, 이 구조에 자신의 코드를 추가하는 방식으로 개발할 수 있도록 하는 프로그래밍의 기본 틀을 의미한다.
  • 개발에 필요한 구조가 제공되고, 여기에 필요한 부분을 조립하는 형태로 개발이 진행된다.

2. 라이브러리

  • 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합

3. Framework vs library

  • 프레임워크는 자동차의 프레임, 즉 기본적으로 구성하고 있는 뼈대를 말한다.
  • 라이브러리는 자동차의 기능을 하는 부품을 의미한다.
  • 한 번 정해진 자동차의 프레임은 바꿀 수 없다.
  • 소형차를 만들기 위해 뼈대를 사용하는데, 이 뼈대로 SUV를 만들 수 없다.(Framework)
  • 그러나 바퀴나, 선루프, 헤드라이트 등은 비교적 다른 종류로 쉽게 바뀔 수 있다.(library)
  • 내가 어떤 기능을 필요로 할 때, 라이브러리를 찾기보다 프레임워크에 그 기능이있는지 부터 먼저 찾아보는 것을 추천

4. Spring이란?

  • 스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링이라고도 불린다.
  • 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있다.

스프링 설치

https://spring.io/

메뉴에서 project > overview > Spring Boot

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".

메뉴에서 project > spring tools 4 > 4.18-windows x86_64

  • 다운로드 받아서 유틸폴더에 넣기 : jar파일이다.
  • 스프링 맞춤형 툴이라고해서 sts 라고 불림 spring tool suite
  • 이파일을 알아서 풀기로 압축을 풀어준다.(다른 알집툴로 풀면 이름이길어서 오류가 날 수 있다. 반디집이 좋다)
  • contents.zip도 알아서 풀기
  • sts어쩌고 4.18어쩌고 있는데 그거로 들어가면 SpringToolSuite4.exe 더블클릭해서 프로그램을 실행한다.
  • 아까만든 workspace로 경로설정해준다.

5. 스프링 프로젝트 생성

https://start.spring.io/

  • 여기로 들어온다. 툴에서 만드는 방법도 있지만 여기에서 만드는것이 훨씬 간편하고 직관적이기 때문에 이렇게 만들기로한다.

5-1. Project

  • Maven, Gradle 두 가지가 있는데 공통점은 빌드 툴이다. 프로젝트에서 필요한 의존성을 관리하는 툴
  • 우리가 라이브러리 집어넣을 때 잡아주는 빌드패스를 아래 툴이 대신한다.
    해당라이브러리의 이름, 버전을 입력하면 알아서 네트워크에서 찾아서 셋팅해준다.
    예를들어 우리가 제이쿼리를 사용한다고하면 제이쿼리에 의존한다고 한다.
    과거에는 Maven을 많이 사용하고 최근에는 gradle를 사용하는 추세이다.
    maven을 xml태그언어로 구성되어 있어 열고 닫고하는 방식으로 의존성을 컨트롤해주어야한다.
    gradle은 더 직관적으로 작성을 해준다.
    maven은 버전까지 잘 설정해야하지만 gradle은 알아서 버전까지 잘 가져온다.
  • 우리는 Gradle-Kotlin를 사용한다.
  • 그리고 스프링 부트 쪽에서 2.7.10을 사용한다.
  • 그룹 이름을 바꾼다. 보통 어떤 회사에 대해서 쓰기 때문에 com.codingbox라고 일단 쓴다.
  • 아티팩트 : 프로젝트 이름, 이번에는 core라고해본다.
  • 패키징은 jar. 스프링부트는 보통 jar로 배포함
  • java버전은 11버전
  • ADD DEPENDENCIES해서 spring web, Thymeleaf 2개 더해준다.
    이렇게하고 제너레이트 누르면 core.zip파일이 생성된다.
  • 이 생성된 파일을 workspace로 이동한다.
  • 알아서 풀기로 풀어준다.
  • 스프링부트로 가서 import projects클릭해서 불러오는 작업을 한다.
  • project root directory에서 방금 풀어놓은 core 폴더를 선택후 생성한다.
    이게 시간이 꽤걸린다.
  • 이거 한 후에 build.gradle.kts에서 뒤에 .kts를 지워서 만든다. 그러면 코끼리 모양이 나온다(백업파일을 만들어도된다.)
    build.grade를 보면 기본정보가 나와있고
    dependencies
    를 보면 2가지 추가한것 (스프링웹이랑 타임리프)
    라이브러리를 프로젝트 중간에 땡겨올 상황이 생겼을 때에 새로 만드는것이 아니라 여기에서 한줄 추가만 하면 된다.
    그러고선 gradle>refresh gradle를 하면된다.

포트 번호 바꾸기 :src/main/resources패키지에서 application.properties

server.port=9090
이걸 추가하여 포트번호를 바꾼다.

우리 인코딩 한번 미리하고갔어야했다. 자바에서했던거랑 똑같이 UTF-8로 맞춰주면 된다.

  • 메뉴에서 프로젝트 - 프로퍼티즈- enc검색후 수정

6. 스프링 시작점

  • @SpringBootApplication : 스프링 부트의 자동 설정 읽기와 생성이 모두 자동으로 생성된다.
메뉴에서 help-install new software
상단에 work with 에 
Spring Tool Suite 4 - https://download.springsource.com/release/TOOLS/sts4/update/latest
이거 복붙해서 넣으면
3개가 나옴
그중 2번째인 스프링 툴즈 디벨로퍼 리소스즈
  • 근데 이게아니라 갑자기 메뉴 help > eclipse marketplace > 검색에서 java and web
    입력하면
  • eclipse enterprise java and web developer tools 3.59 를 install\
    기본적으로 선택되어 있는 것만 confirm. 동의 한 후에 finish
    하다보면 trust뜨는데 type에 PGP 체크한 후에 trust selected클릭
    재시작 한 후에 src/main/resources > new >others 에서 html검색했을 때 나오면 성공
  • 그렇다고 만들지는 말고 다시 리소스 패키지를 보면 static이라고 되어있는 것은 정적 페이지인다.
  • 여기서 new해서 other > html 검색해서 index.html 만들어보자
    실무가서도 index.html파일이 거의 웰컴페이지일것이다.
    근데 이 웰컴페이지를 바꾸는것을 어떻게 할까?
    구글에서 스프링검색후에 표준 문서를 본다.
    뭐 이렇게 나와있다.1.1.5. Welcome Page
    Spring Boot supports both static and templated welcome pages. It first looks for an index.html file in the configured static content locations. If one is not found, it then looks for an index template. If either is found, it is automatically used as the welcome page of the application.

이 html페이지 작성 후에
controller패키지 하나 만들어 준 후에 그아래에 HelloController.java파일을 만든다.
만든 자바파일에 @Controller 하나만 붙여주면 끝이다.
MVC2 패턴을 한다는 것과 같은 말이다.

7. Spring MVC

  • @Controller : 해당 url mapping을 찾는 역할을 한다.
    저 위에 a태그를 누르면 겟방식으로 갈것이다.
  • @GetMapping : url get 방식 요청 매핑
    템플레이츠에다가 hello.html 이라는 파일을 만들고 여기에다가 타임리프라는것을 사용할것이다. el이나 jstl마냥쓸것이다.
    상단의 html 태그를 이렇게 바꿔준다.
  • 컨트롤러에서 리턴 값으로 문자를 반환하면(예를들어 viewname이라는 문자)
    resources/templates/ + {viewname} + .html
    부터 찾아보기로 약속이 되어있다.
    이런 역할을 하는 애 : 뷰 리졸버 (viewResolver)

8. DispatcherServlet(기술면접 질문으로 종종 나오는것)

  • spring mvc도 프론트 컨트롤러 패턴으로 구현되어 있다.
  • 스프링 MVC의 프론터 컨트롤러가 바로 디스패처 서블릿이다.
  • DispatcherServlet -> FrameworkServlet을 상속받고 있고 이것은 또 -> HttpServletBean을 상속받고 있고 이것은 또 -> HttpServlet을 상속받고 있다.

9. ViewResolver

  • 실행할 뷰를 찾는 일을 한다.
  • 페이지 컨트롤러가 리턴한 뷰 이름에 해당하는 뷰 객체를 매핑하는 역할

10. Model

  • Controller 에서의 데이터를 Model에 담는다.
    View는 Model에 담겨있는 데이터만 쏙쏙 골라서 화면에 바인딩 해준다.
  • HashMap의 형태를 갖고 있고, key와 value값을 저장한다.
  • servlet에서 request.setAttribute()와 비슷한 역할을 한다.

11. ModelAndView

  • 가끔 사용할 것이다.
  • 모델과 뷰가 합쳐진 객체. model에서 view의 영역이 좀 더 확장
  • Model과 View를 동시에 설정이 가능하려면 컨트롤러는 ModelAndView객체만 리턴하지만 Model과 View가 모두 리턴 가능
  • addObject(Key, Value);

application properties에서 한글셋팅하는 부분추가한다.

모든 html파일 생성할 때 타임리프 바로 넣도록 설정하기

메뉴 윈도우에 프리퍼런스에서 web html파일즈에서 에디터 templates보면
New HTML File (5) 이부분에

<html xmlns:th="http://www.thymeleaf.org">

라고 수정한다.

0개의 댓글