
JAVA 버전은 17로 설치한다는 전제

| 익스텐션 | 개발자 | 설명 |
|---|---|---|
| Spring Boot Extension Pack | VMware | Spring Boot 확장팩 |

Ctrl + Shipt + P > spring initializr: Create Gradle Project 선택Spring 버전 선택
첫 번째 항목이 추천항목이므로 첫 항목 선택함

3.3.4 선택3.3.5 버전이 가장 최신
Java 선택
kr.jinju버전 없는 Jar파일 이름
특수문자는 사용할 수 없고, 소문자만 사용되어야 한다.
즉, 프로그램 이름을 의미함(소문자) : hellospring

4,5에 의해 프로그램의 패키지 이름이 kr.jinju.hellospring으로 지정됨

Jar 선택
17 선택기본으로 탑제할 라이브러리를 의미

참고
- 이후에 추가될 라이브러리 다수
- 검색 기능 활용 권장 (키워드 검색 활용한다.)

참고 :
- SpringBoot에서는 JSP를 권장하지 않는다.
JSP자리를 Thymeleaf Template Engines 가 대체함- JAVA는 JavaME,JavaSE,JavaEE(JSP+SERVLET)
Oracle에서 개발 중단 -> JakartaEE..

Generate into this folder )
ArtifactId ) 생성생성이 완료되면 VSCode 우측 하단에 로드할지를 묻는 창이 표시됨
여기서 폴더를 바로 열지 말고
윈도우 탐색기를 통해 생성된 프로젝트의 폴더이름을 변경한 후 프로젝트 오픈한다.





Ctrl+, 로 설정에 들어간다. 설정열기(JSON)을 연다.
"java.import.gradle.java.home": "c:\\jdk-17.0.2"

Restart
Spring Boot Dashboard 를 클릭해서 로드된걸 확인한다.Java:Ready 확인프로젝트 생성 완료

${ArtifactId}Application.java에 내용 추가
src/main/java/kr/jinju/hellospring/HellospringApplication.java
@Controller 추가// 리턴하는 문자열을 웹 브라우저에게 전달함
// 이 항목을 명시하지 않을 경우 리턴하는 문자열은 view의 파일이름이 됨
// --> import org.springframework.web.bind.annotation.ResponseBody;
@ResponseBody
// 이 메서드가 연결될 URL 경로를 지정
@GetMapping("/test")
public String hello() {
String message = "<h1>Hello Spring</h1>";
message += "<p>안녕하세요~ 스프링~!!</p>";
System.out.println(message);
return message;
}

RemoteLiveReload 설치"java.debug.settings.hotCodeReplace": "auto",
"spring.dashboard.openWith": "external"
Spring Boot Dashboard의 Apps 섹션에서Debug 클릭 (또는 실행 버튼)http://localhost:8080/hellospring 의 URL을 통해 결과 확인Java Class나 HTML이 수정된 경우 별도의 재시작 없이
컴파일 내용이 갱신되므로 웹 브라우저만 새로고침 하여 결과를 확인한다.
하지만build.gradle이 변경된 경우는 프로그램을 재시작 해야 한다.
Controller에서 정의한 URL을 대상으로 해야 한다./src/main/resources/templates/now.html
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.server-time {
color: red;
font-size: 16px;
}
</style>
</head>
<body>
<h1>Hello SpringBoot</h1>
<p>지금은 <span th:text=${nowtime} class="server-time"></span>입니다.</p>
</body>
</html>
/src/main/resources/templates/myview.html
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Hello SpringBoot</h1>
<h2 th:text=${message1}></h2>
<h3 th:text=${message2}></h3>
<p th:text=${message3}></p>
</body>
</html>
src/main/java/GroupId/ArtifactId/Controllers아래에 추가할 것. /** 2) 자동으로 View의 이름을 찾는 컨트롤러 */
// -> import org.springframework.ui.Model;
@GetMapping("/now")
public void world(Model model) {
// -> import java.util.Date;
model.addAttribute("nowtime", new Date().toString());
// void형의 메서드이므로 이 메서드가 사용하는 view의 이름은
// URL 이름과 동일한 now.html이 된다.
}
/** 3) View의 이름을 반환하는 컨트롤러 */
@GetMapping("/myview")
public String nice(Model model) {
model.addAttribute("message1", "스트링부터 View 테스트입니다.");
model.addAttribute("message2", "안녕하세요~");
model.addAttribute("message3", "반갑습니다~");
// String 형의 메서드 이므로 이 메서드가 리턴하는 문자열이 View의 이름이 된다.
return "myview";
}
/src/main/resources/static 폴더는
정적 자원(html, css, js, 이미지등)을 웹에 노출하기 위한 폴더
예를들어 /src/main/resources/static/hello/world/test.html은
http://localhost:8080/@{contextPath}/hello/world/test.html 경로로
접근할 수 있음.
View에서 /@{contextPath}/hello/world/test.html 형태로
링크, <img>, <script> 태그 등을 통해 정적자원을 활용할 수 있음
/src/main/resources/static/img 폴더를 생성하고 그 안에 임의의 이미지 파일을 배치<img th:src="@{/img/spring.png}" alt="springboot" width="300" />