Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch11
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch14
- jpa 활용2 - api 개발 고급
- 스프링 입문(무료)
- 타임리프 - 기본기능
- 자바의 정석 기초편 ch12
- 2024 정보처리기사 수제비 실기
- 스프링 mvc2 - 타임리프
- 스프링 db2 - 데이터 접근 기술
- 스프링 mvc2 - 검증
- 게시글 목록 api
- jpa - 객체지향 쿼리 언어
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch3
- 스프링 mvc2 - 로그인 처리
- @Aspect
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch5
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch8
- 스프링 고급 - 스프링 aop
- 스프링 mvc1 - 서블릿
Archives
- Today
- Total
나구리의 개발공부기록
프로젝트 환경설정 - 프로젝트생성, 라이브러리 탐색, View환경설정, 빌드 및 실행 본문
인프런 - 스프링 완전정복 코스 로드맵/코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술(무료)
프로젝트 환경설정 - 프로젝트생성, 라이브러리 탐색, View환경설정, 빌드 및 실행
소소한나구리 2024. 1. 22. 22:56강의 기반
- Java 17 or 21 (강의 영상에는 11이지만 업데이트 됨) - 해당 강의는 21로 진행
- IntelliJ (이클립스로 해도 됨)
- 스프링 부트 3.0 이상 (2.x에 대한 지원이 종료 되었음)
프로젝트 만들기
- 스프링부트로 프로젝트 생성
- https://start.spring.io 접속
- 스프링부트 기반으로 스프링 관련 프로젝트를 만들어 주는 사이트(스프링에서 운영)
- 설정
- Project : Gradle - Groovy (과거에는 Maven을 많이 썼으나 요즘은 gradle로 많이 넘어옴)
- Language : Java
- Spring Boot : SNAPSHOT,MI 등이 붙지않은 버전 중 최신버전
- SNAPSHOT,M1 등이 붙은 버전은 비공식 버전
- Project Metadata
- Group : 대부분 기업 도메인명을 작성 -> 지금은 아무거나 작성
- Artifact : 프로젝트명(Build에 나올 때 결과물)
- Name, Package name은 자동으로 입력
- Description : 유지
- Packaging : Jar
- Java : 21(사용하는 버전)
- Dependencies(종속성) - 어떤 라이브러리를 가져와서 쓸 것인지 선택
- ADD DEPENDENCIES..클릭
- Web Project를 만들 때
- Spring Web - WEB
- Thymeleaf - TEMPLATE ENGINES(HTML을 만들어주는 템플릿 엔진)
- 마음에 드는 것을 선택 하면 됨.
- GENERATE (Command + enter)
intelliJ
- intelliJ실행 -> Open -> 다운받은 프로젝트 폴더 -> build.gradle 실행
카테고리 설명
- .idea : intelliJ가 사용하는 설정 파일
- gradle : Gradle과 관련되어 Gradle을 사용하는 폴더
- src : 요즘은 메인과 테스트가 폴더가 기본적으로 나뉘어져 있음(거의 표준화)
- main : 자바(실제 패키지,소스파일)와 리소시스(자바코드파일을 제외한 모든 것) 폴더가 존재
- test : 테스트코드들과 관련된 소스
- 요즘 개발 트렌드에서는 테스트 코드가 중요하다는 반증
- build.gradle : 설정파일정보
- plugins - spring boot 버전,언어 등의 정보
- sourceCompatibility : java 버전의 호환성
- repositories : 라이브러리를 다운받는 정보
- dependencies : 설정한 라이브러리 정보
- .gitignore : 깃 소스코드 관리(소스코드파일만 빼서 정리해줌)
- gradlew, gradlew.bat : 추후 설명
생성한 프로젝트 실행해보기
- 패키지 폴더 트리 구조 변경
- Compact Middle Packages체크 시 아래 이미지 처럼 변경
- 실행
- 소스파일 선택
- class 옆 재생표시 클릭 후 Run
- 콘솔 확인 : 톰캣이라는 웹서버를 내장하고 있음
- main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path ''
- 웹브라우저 열어서 주소창에 localhost:8080 검색
- 좌측 이미지의 페이지가 뜨면 성공
Run을 IntelliJ에서 실행하기
- 설정(Settings...) -> gradle검색 -> Build And run using, Run tests using 둘다 IntelliJ로 변경
- Gradle을 통하지 않고 IntelliJ에서 바로 실행되기 때문에 더 빨리 실행 됨
라이브러리 살펴보기
- Gradle은 의존 관계가 있는 라이브러리를 함께 다운로드
- SpringWeb과 Thymeleaf의 라이브러리만 다운받았어도 연관된 모든 라이브러리가 다운로드 됨
스프링부트 라이브러리
- 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 : println보다는 실무에서는 기록을 남겨야 하기에 log를 사용
- logback, slf4j
- spring-boot
테스트 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj:테스트 코드를 좀 더 편하게 작성할 수 있도록 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
스프링의 기능이 어마어마하게 많으므로 필요한 것을 찾는 능력이 중요!
- spring.io 접속 -> Projects -> Spring Boot -> LEARN -> 사용중인 스프링부트 ver. Reference Doc. 클릭
- 찾으려는 기능이 있는 왼쪽 카테고리를 클릭하여 검색
- a PDF를 누르면 PDF로 한번에 볼 수 있어서 더 찾기가 수월함
View 환경설정
Welcome Page만들기
- 스프링부트가 제공하는 Welcome Page기능 (웰컴페이지 : 도메인접속 시 가장 처음에 보이는 페이지)
- ~src/main/resources/static 폴더에 index.html 파일을 올려두면 Welcome Page기능을 제공함
- index.html 파일에 띄울 html구문을 입력
- 입력 후 Run을 재실행 하면 localhost:8080에 정상적으로 반영이 됨
- thymeleaf Template Engine 활용
- 동적 웹페이지를 만들 때에는 Template Engine을 활용
- spring boot의 Template Engine은 아래 4가지를 사용할 수 있음
- FreeMaker
- Groovy
- Thymeleaf - 현재 라이브러리에 추가한Template Engine
- Mustache
- 패키지와 클래스 생성(controller 만들기)
- ~main/java/생성한프로젝트경로에 package생성 후 그 하위에 클래스 생성
- 아래처럼 코드를 작성하면 웹 어플리케이션 주소에 /hello 를 입력하면 hello메서드가 실행 됨
- Controller에서 return값으로 문자를 반환하면 뷰 리졸버(ViewResolver)가 화면을 찾아가서 처리 함
(스프링부트가 동작하도록 세팅이 되어있음)
package start.startspring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller //애노테이션 입력
public class HelloController {
//GetMapping의 Get은 Get/Post의 Get임
@GetMapping("hello") // url에 hello를 매칭이 되면 메서드 실행
public String hello(Model model) { // MVC: model, View, Control
model.addAttribute("data", "Hi!!" );
// resources/templates/{ViewName}.html을 찾아서 실행
return "hello";
}
}
- ~main/resources/templates에 hello.html 파일 생성 후 html 구문입력
<!DOCTYPE HTML>
<!--Thymeleaf엔진이 xmlns스키마로 선언되어있음 -> thymeleaf문법을 사용할 수 있다-->
<html xmlns:th="http://www.thymeleaf.org"> <!--th = thymeleaf-->
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<!--${data}부분이 HelloController 클래스에서 작성한 model.addAttribute("data", "hello!!" ); 메서드의 value값으로 치환 됨-->
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p> <!--th = thymeleaf-->
</body>
</html>
PS.
- spring-boot-devtools라는 라이브러리를 추가하면 html파일을 컴파일만 해줘도 서버 재시작 없이 View파일을 변경할 수 있음.
- 웹서버 실행 후 종료를 하지않고 intelliJ를 종료하면 오류가 발생(웹서버가 계속 실행 되고 있음 -> 터미널을 통해 강제 종료 해야함)
8080오류 해결 터미널 명령어
lsof -i :8080 -> 실행되고있는 리스트가 나옴
kill PID값(숫자5자리)
빌드하고 실행하기
- 터미널 실행후 build할 프로젝트가 있는 폴더로 이동 후 아래 명령어대로 진행
cd 경로 입력
./gradlew build 엔터 -> 알아서 build 폴더가 생성 되며 진행
cd build/libs 이동 후 ls로 확인하면 .jar 확장자로 만들어져 있음
java -jar 파일명 엔터 -> Build 실행
꼭 control + c로 Build를 종료해야 함(안그러면 계속 실행 됨 - kill해야함)
- intelliJ에서 Run하고 있으면 동시에 실행이 안되므로 꼭 끄고 진행
- 만약 빌드가 잘 안될 경우 build해야할 폴더 경로로 다시 돌아가서 ./gradlew clean build를 하면 완전히 다시 지우고 다시 빌드 함
출처 : 인프런 - 스프링 입문(무료) / 김영한님