스프링부트 너 뭐 돼?🤷‍♀️(1) - SPRING BOOT

joyfulwave·2022년 12월 5일
0

피할 수 없다면 즐기자! 스프링부트 너.. 뭐 돼?




📚 Framework 란

📌 Framwork vs library

⚫ Framework

  • 프레임워크는 '뼈대나 근간'을 이루는 코드들의 묶음으로 프로그램의 기본 흐름이나 구조를 정하고, 이 구조에 자신의 코드를 추가하는 방식으로 개발할 수 있도록 하는 프로그래밍의 기본 틀을 의미해요.
  • 개발에 필요한 구조가 제공되고, 여기에 필요한 부분을 조립하는 형태로 개발이 진행돼요.
  • 프레임워크를 자동차로 소형차의 뼈대라고 예를 들자면, 소형차를 만들기 위한 뼈대임으로 SUV를 만들 순 없어요.

⚫ library

  • 라이브러리란 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합
  • 바퀴나, 선루프, 헤드라이트 등은 비교적 다른 종류로 쉽게 바꿀 수 있다.



📚 STS

(Spring Tool Suite : 스프링에 적합한 툴)

📌 sts 설치하기

⚫ (1)

아래에 URL로 접속하여 [https://download.springsource.com/release/STS/3.9.18.RELEASE/dist/e4.21/spring-tool-suite-3.9.18.RELEASE-e4.21.0-win32-x86_64.zip] 을 다운받아주세요.

https://github.com/spring-projects/toolsuite-distribution/wiki/Spring-Tool-Suite-3

⚫ (2)

다운받은 파일을 압축을 풀고 [sts-bundle] - [sts-3.9.18.RELEASE] 경로로 들어가 STS.exe 을 실행시켜주세요.


📌 spring boot 프로젝트 생성

⚫ (1)

아래의 url에 접속하여 자신의 환경 세팅대로 선택한 후 "spring web" 과 "thymeleaf" dependencies를 추가해주세요. 다 세팅 후 하단의 generate를 클릭하여 다운받아주세요.

https://start.spring.io/

  • project : 사용할 빌드 툴 선택(maven/gradle)

    • Maven, Gradle은 프로젝트에 필요한 의존성을 관리하는 빌드 라이프사이클을 관리해주는 툴이에요. 과거에는 Maven을 최근에는 Gradle을 사용하는 추세에요.
  • Spring Book : 버전 선택

    • SNAPSHOT(개발중인 버전), M(Minor: 정식 릴리즈 되지 않은 버전), RC2
    • 아무것도 붙어있지 않은 것이 정식 릴리즈된 버전이에요.
  • Group : 기업의 도메인명

  • Artifact : 빌드 결과물(프로젝트 명)

⚫ (2)

다운 받은 파일을 본인의 workspace에 옮겨 준 후 압축을 풀어주세요.


📌 생성한 프로젝트 import하기

⚫ (1)

[Package Explorer] 필드에서 우클릭 후 [import]에 들어가줘요. import 차에서 [Gradle] - [Exising Gradle Project] 를 클릭하여 이전에 다운받아 압축 푼 프로젝트 폴더를 찾아서 클릭하여 import 해주세요.


📌 프로젝트에서 라이브러리 추가

⚫ (1)

프로젝트에서 라이브러리를 추가적으로 도입하려면 해당 프로젝트의 [build.gradle]의 dependencies에 명시해주면 돼요. gradle에 dependencies를 명시한 후에는 꼭 build refresh를 해줘야해요. 다음 내용을 참고해주세요.

dependencies {
	// 타임리프 : 앞에서 프로젝트 생성시 추가해줬던 dependencies 에요.
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    // spring web : 앞에서 프로젝트 생성시 추가해줬던 dependencies 에요.
	implementation 'org.springframework.boot:spring-boot-starter-web'
    // jpa
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'	
    // db
	implementation group: 'com.oracle.database.jdbc', name: 'ojdbc6', version: '11.2.0.4'
    // lombok
	implementation 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

📌 lombok

lombok은 @Controller, @Getter, @Setter 등과 같은 스프링부트 어노테이션 자동완성을 지원해줘요.

⚫ lombok 설치 방법

https://the-dev.tistory.com/27


📌 gradle refesh 하기

⚫ (1)

해당 프로젝트의 [burild.gradle] 우 클릭 - [Gradle] - [Refresh Gradle Project] 를 하면 라이브러리 추가 등의 이유로 새로고침이 필요할 때 refresh를 할 수 있어요.


📌 서버에 띄어보기

⚫ (1)

우측 하단에 [Boot Dashboard] 에서 [local] 을 펼쳐주면 서버에 띄우고자 하는 프로젝트 명을 확인 할 수 있어요. 우클릭후 [(Re)start]를 클릭해주면 서버로 띄어 프로젝트를 확인할 수 있어요.


📌 추가 install

⚫ (1)

[Help] - [Install New Software] 에서 [Latest Eclipse Release - httpL//download.eclipse.org/releases/latest] 를 검색하여 [Web, XML, Java EE and OSGi Enterprise Devlopment] 항목에서 아래 tool 들을 다운받아주세요.

  1. Eclipse Java EE Developer Tools
  2. Eclipse Java Web Developer Tools
  3. Eclipse Java Web Developer Tools - JavaScript Support
  4. Eclipse Web Developer Tools
  5. Eclipse Web JavaScript Developer Tools
  6. Eclipse XML Editors and Tools
  7. Eclipse XSL Developer Tools







📌 Thymeleaf Plugin

⚫ (1)

[Help] - [Install New Software] 에서 [http://www.thymelead.org/eclipe-plugin-update-site/] 를 검색하여 타임리프 플러그인을 모두 다운받아주세요.



📌 콘솔 한글 환경설정

⚫ (1)

아래에 url에서 * 이클립스 오류 방지를 위한 설정 을 참고해주세요.
(아래 포스팅은 eclipse 에서 세팅을 하고 있지만 sts와도 동일한 방법이니 똑같이 진행해주세요. sts에서의 한글 깨짐을 방지하는 세팅입니다.)

https://velog.io/@luvjoyyy/%EC%88%A8-%EC%B0%B8%EA%B3%A0-JAVA-%EB%8B%A4%EC%9D%B4%EB%B8%8C-1


📌 application.peoperties

application.peoperties 파일에서 포트 변경 등의 환경설정을 해줄 수 있어요.

#port - 포트 9090으로 변경
server.port=9090

#thymeleaf cache 설정
spring.thymeleaf.cache=false

#encoding - 한글 깨짐 방지
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
server.servlet.encoding.enabled=true



📚 Spring Boot 특징

⚫ Embed tomcat

  • 스프링 부트는 내장형 톰캣을 가지고 있기 때문에 별도의 톰캣을 설정할 필요가 없어졌으며, 그렇기 때문에 독립적으로 실행 가능한 jar로 손쉽게 배포가 가능해졌어요.

⚫ AutoConfigurator

  • 설정을 어노테이션을 이용하여 대신해요.
  • @Container, @Service, @Getter, @Setter ...



📚 Spring

  • @Controller : Controller에 붙여줘요. 해당 mapping url을 찾는다.
  • @GetMapping : get 방식의 요청
  • @PostMapping : post 방식의 요청
  • 스프링부트 템플릿엔진 기본 viewName 매핑방식
    resources:tempalte/ + {viewName} + .html



📚 DispatcherServlet

  • 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있어요.
  • 스프링 MVC의 프론트 컨트롤러가 바로 디스패처 서블릿이에요.
  • DispatcherServlet -> FrameworkServlet
    -> HttpServletBean -> HttpServlet



📚 ViewResolver 란?

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



📚 Model 이란?

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



📚 ModelAndView

  • Model에서 View 영역이 좀 더 확장된 것을 의미해요. Model과 View를 동시에 설정이 가능하며, 컨트롤러는 ModelAndView객체만 리턴하지만, Model과 View가 모두 리턴이 가능해요.



📚 일반적인 웹 애플리케이션 계층 구조

  • 컨트롤러 : 웹 MVC의 컨트롤러 역할
  • 서비스 : 핵심 비즈니스 로직 구혁
  • 레파지토리 :데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리
  • 도메인 : 비즈니스 도메인 객체 (예: 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리되는 객체)



무사히 적응할 그 날을 기대 ✔️




출처
https://media.giphy.com/media/kyUIknbbDNvID5XzU4/giphy.gif
https://media.giphy.com/media/A6aHBCFqlE0Rq/giphy.gif

0개의 댓글