프로젝트 생성
- Java 11
- IDE : InteliJ
- 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성
Generate 후, 압축 해제하여 인텔리제이에서 Open or Import - HelloSpringApplication 메인 메소드 실행
// main/java/hello/hellospring/HelloSpringApplication.java
// @SpringBootApplication 어노테이션으로 인해 스프링부트 애플리케이션이 실행되고,
// 내장된 톰캣 웹 서버를 자체적으로 띄우며 스프링부트 실행
@SpringBootApplication
public class HelloSpringApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
}
- localhost:8080에 접속하여 확인
- Gradle을 통해 run 하게 되면 실행이 느리게 될 수 있으므로 빌드 설정을 변경하여 자바 직접 실행
File - Settings - Build, Execution, Deployment - Build Tools - Gradle
라이브러리 살펴보기
- 의존 관계를 가지므로 관련된 라이브러리를 쭉 가져오게 됨
- Gradle의 Dependencies를 통해 라이브러리 간의 의존 관계를 볼 수 있음
- 스프링 부트 라이브러리
1) spring-boot-starter-web
→ spring-boot-starter-tomcat : 톰캣 (웹서버)
→ spring-webmvc : 스프링 웹 MVC
2) spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(View)
3) spring-boot-starter(공통) : 스프링 부트 + 스프링 코어 + 로깅 (system.out.println 대신)
→ spring-boot → spring-core
→ spring-boot-starter-logging → logback, slf4j - 테스트 라이브러리
1) spring-boot-starter-test
→ junit : 테스트 프레임워크 (핵심)
→ mockito : 목 라이브러리
→ assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
→ spring-test : 스프링 통합 테스트 지원, junit 테스트를 할 때 스프링과 통합해서 테스트하도록 도와줌
View 환경설정
- 도메인에 접속했을 때 첫 화면인 Welcome Page 만들기 : index.html
<!-- main/java/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>
- Spring 을 공부하며 검색하는 방법 : 메뉴얼에서 검색을 해보자!
- Thymeleaf 템플릿 엔진 사용해 동작하고, 프로그래밍이 되는 화면을 만들어 보기
+) 참고 : 뷰 템플릿과 MVC 패턴 / MVC의 역할과 실행 흐름
1. 웹 애플리케이션의 첫 번째 진입점인 controller
// main/java/hello/hellospring.controller/HelloController.java
@Controller // 어노테이션
public class HelloController {
@GetMapping("hello") // hello로 접속 시 이 메소드 호출
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello"; // template/hello.html로 가서 렌더링 하라는 것
}
}
2. View Template
<!-- main/resources/templates/hello.html -->
<!DOCTYPE HTML>
<!-- 템플릿 엔진으로 thymeleaf 사용 가능 -->
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<!-- HelloController에서 model.addAttribute로 넣었던 key-data와 value-hello!! 로 치환
<p th:text="'안녕하세요. ' + hello!!" >안녕하세요. 손님</p> -->
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
3. 결과
thymeleaf 템플릿엔진 - 동작 환경 그림
: 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버가 화면을 찾아서 처리
→ 스프링 부트 템플릿엔진 기본 viewName 매핑
→ resources:templates/ +{ViewName}+ .html
→ 그러므로 templates/hello.html 을 찾아서 처리
+) 참고
spring-boot-devtools 라이브러리 추가 시,
html 파일을 컴파일 (build → Recompile) 만 해주면 서버 재시작 없이 View 파일 변경 가능
빌드하고 실행하기
- 빌드를 하여 인텔리제이 안이 아닌, 실제 실행할 수 있는 파일 서버 만들어 보기
- 윈도우 사용자
- 명령 프롬프트 실행 또는 인텔리제이 등 터미널 창에 cmd 입력하여 이동
- gradlew.bat 실행을 위해 gradlew 입력
- gradlew build 입력
- 폴더 목록 확인을 위해 dir 입력
- 폴더 이동을 위해 cd build/libs 입력
- java -jar hello-spring-0.0.1-SNAPSHOT.jar 입력하여 실행 확인
- 결과 확인
참고 영상
'Java-Spring > 스프링 입문' 카테고리의 다른 글
[스프링 입문] 스프링 DB 접근 기술 (0) | 2022.02.09 |
---|---|
[스프링 입문] 회원 관리 예제 - 웹 MVC 개발 (0) | 2022.01.21 |
[스프링 입문] 스프링 빈과 의존관계 (0) | 2022.01.20 |
[스프링 입문] 회원 관리 예제 - 백엔드 개발 (0) | 2022.01.19 |
[스프링 입문] 스프링 웹 개발 기초 (0) | 2022.01.16 |