첫 단추를 잘 끼우자 ..!
프로젝트 생성
- 사전 준비물 : Java11, IDE(InteliJ) 설치
- 스프링 부트 스타터 → 스프링 프로젝트 생성 : Spring Initializr
- Maven, Gradle : 필요한 라이브러리를 가져오고 빌드하는 라이프 사이클까지 관리하는 툴, 요즘 추세는 Gradle
- Group : 기업 도메인명
- Artifact : 프로젝트
- Dependencies : 어떤 라이브러리를 가져와 쓸지 선택
- Thymeleaf : html을 만들어주는 템플릿 엔진
3. Generate하여 IntelliJ에서 build.gradle 파일을 프로젝트로 open
더보기
Error
그 사이에.. Error가 남 ㅋㅋ
A problem occurred configuring root project 어쩌구
Solve
버전 문제 ^^
스프링 부트와 자바의 버전을 맞춰줘야 했다.. ㅎㅎ
4. 프로젝트 구조
- .idea : IntelliJ가 사용하는 설정 파일
- src : main, test 폴더 구분
- main : 실제 패키지와 관련 소스들
- test: 테스트 코드와 관련된 소스들
- resources : 실제 java 파일을 제외한 나머지
- buil.gradle
- 버전 설정과 라이브러리 가져오기
- sourceCompatibility : Java의 버전
- repositories : 라이브러리를 다운 받아오는 곳
- dependencies : JUnit 5 라이브러리가 기본으로 포함됨
- .gitignore : 소스코드 관리, build 된 결과물 등을 제외하도록
- Compact Middle Package로 경로 단축 가능
5. 실행 후 localhost:8080 접속
- main 메소드 실행시 SpringApplication.run 실행 시 SpringBootApplication 실행
- 톰캣이나 웹서버를 내장하고 있기 때문에 스프링 부트가 같이 올라 옴
6. Gradle 설정 변경 for 속도 향상
라이브러리 살펴보기
- External Libraries 확인
- Maven과 Gradle은 라이브러리의 의존 관계를 모두 관리 해줌
- Gradle은 Spring Core까지 다 가지고 옴
- 의존 관계 확인
- 라이브러리를 빌드해 웹 서버에 올리는 것으로 단순하게 작업 가능
- log를 사용해야 심각한 오류를 따로 확인 가능
- slf4j : 인터페이스
- logback : 어떤 구현체로 로그를 출력할지
- 스프링 부트 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
- spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
- spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot-starter-web
- 테스트 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크 (junit5로 추세가 넘어가는 )
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
- spring-boot-starter-test
View 환경설정
- resources/static/index.html 생성 (정적페이지)
<!DOCTYPE HTML>
<html>
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>
- 스프링 부트는 기능이 많기 때문에 필요에 따라 찾는 능력이 중요
2. Thymleaf 템플릿 엔진 사용
- thymeleaf 공식 사이트: https://www.thymeleaf.org/
- 스프링 공식 튜토리얼: https://spring.io/guides/gs/serving-web-content/
- 스프링부트 메뉴얼: Spring Boot Features
3. java/hello/hellospring/controller/HelloController.java 생성
- 웹 어플리케이션에 /hello 입력 시 메소드 실행
- key가 data, value가 hello!!
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
4. resources/templates/hello.html 생성
- ${data}가 hello!!로 치환
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
- 동작 환경 그림
- 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버(viewResolver)가 화면을 찾아서 처리
- 스프링 부트 템플릿엔진 기본 viewName 매핑
- resources:templates/ + {ViewName} + .html
빌드하고 실행하기
- cmd 창에서 프로젝트 위치로 이동
- gradlew 입력
- gradlew build 입력
- build/libs로 이동
- java -jar hello-spring-0.0.1-SNAPSHOT.jar 입력
더보기
Error
명령어를 찾을 수 없다 .. 어쩌구
Solve
1. PowerShell이 아닌 cmd에서 하고 있는지 확인
2. Java JDK 설치가 되어 있는지 확인
3. 고급 시스템 속성의 PATH 설정이 잘 되어 있는지 확인
끝 !
'Spring > Spring-Basic' 카테고리의 다른 글
[스프링 입문] Section4. 스프링 빈과 의존관계 (0) | 2023.05.07 |
---|---|
[스프링 입문] Section3. 회원 관리 예제 - 백엔드 개발 (0) | 2023.04.03 |
[스프링 입문] Section2. 스프링 웹 개발 기초 (0) | 2023.03.29 |
[스프링 입문] Section0. 강의 소개 (0) | 2023.03.29 |
[Spring-Basic] Spring-Basic 스터디 계획 1 - 스프링 입문 (0) | 2023.03.29 |