목차
개발 환경 개요
지원 계획 참조
- Java 버전 별 지원 계획 - https://www.oracle.com/java/technologies/java-se-support-roadmap.html
- Spring 버전 별 지원 계획 - https://spring.io/projects/spring-framework/#support
- https://spring.io/projects/spring-boot/#support
Spring 개발 환경 참조
Spring Tool Suite 4
- 다운 받아 더블 클릭을 하여 적절한 위치에 압축을 푼다.
- 압축 푼 폴더에 들어가서 SpringToolSuite4.exe 실행 하면 Spring 을 사용하는 Eclipse가 켜진다.
- Help > Eclipse Marketplace
- 검색어로 Thymeleaf 입력 후 Thymeleaf plugin 설치
- 설치 중간에 약관 동의 해야 함
- 플러그인 설치 후 STS 재시작
새 프로젝트를 만드는 법
첫번째 방법
- File > New > Spring Starter Project
- Packaging을 Jar로 하면 실행 가능한 Jar 파일로 패키징된다. → Tomcat 포함
- Packaging을 War로 하면 War파일로 패키징 되고, 배포 시 용량이 적고, 프로젝트 내용만 있고 Spring, Tomcat등 버전을 맞춰줘야함.
두번째 방법
- 적절히 설정 후 GENERATE
- 초기 파일을 다운 받아 import 하여 사용한다.
Http Client
Http Client의 용도
- Web page를 제공하지 않는 RESTful 서버나 axios 등의 요청을 처리하는 경우 Request를 서버로 날려줄 Client 앱이 있으면 편하다.
- 포스트맨, 인섬니아 등이 있다.
포스트맨 : https://www.postman.com/
인섬니아: https://insomnia.rest/
→ 즉, 백엔드에서의 GET요청을 제외한 POST, PUT, PATCH 등을 테스트로 임의의 요청에 의해 응답을 받아 볼 수 있다.
프로젝트 생성
- File > New > Spring Starter Project
- 설정 후 Next
- Template Engine 에서 Thymeleaf 체크
- Web 카테고리에서 Spring Web 체크
살펴보기
View Template 추가
- /src/main/resources
- templates 폴더에 index.html 파일 추가
- New > File
-index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Hello!!!!</h1>
</body>
</html>
Web Controller 추가
- 만들어진 패키지에서 우클릭 > New > Class
- Name : WebController
-WebController.java
package com.example.hello; // 사용자 패키지 이름
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class WebController {
@GetMapping("/")
public String index() {
return "index";
}
}
실행
- src/main/java 내의 “패키지Application.java” 우클릭 선택 후 Run as > Spring Boot App
- 에티터 하단 화면 콘솔 확인
- Port 번호(프로토콜) 확인
- Started 패키지Application 메시지 확인
Tomcat initialized with port “8080” 이 부분이 포트 번호이다.
- 이떄 실행 시 오류가 나면 포트번호가 겹쳐서 생기는 오류 일수도 있으니 포트번호를 변경해보자.
접속
- http://localhost:포트번호
- 접속 시 index.html 가 표시된다.
유용한 라이브러리
Spring boot devtools
- 소스코드의 수정 사항을 서버 리부팅 없이 적용해준다.
- WebController.java에 해당 내용을 추가하여본다.
@GetMapping("/hello")
@ResponseBody
public String hello() {
return "Hello";
}
- ResponseBody 클래스 import 필요하다. import org.springframework.web.bind.annotation.ResponseBody;
- 서버가 켜진 상태에서 저장 후 http://localhost:포트번호/hello 를 웹 브라우저에서 열어봅니다.
- Spring boot devtools가 없으면 소스코드를 수정해도 서버를 리부팅 하지 않으면 수정 내용이 반영되지 않는다.
- 패키지의 build.gradle 에 다음 코드를 추가한 다음 해당 파일 우클릭 Gradle > Refresh Gradle Project
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Refresh가 적용된 후 서버에 devtools가 추가될 것이다.
Lombok
- Annotation(어노테이션)을 이용해 Getter/Setter 및 Constructor를 자동으로 만들어주는 도구
- 데이터용 클래스에서 작업량을 줄여주고 코드 가독성을 높여준다
- Lombok 플러그인을 먼저 설치해줘야한다.
- https://projectlombok.org/download
- 다운로드 받은 폴더에서 cmd나 쉘을 켜고 “java -jar lombok.jar” 명령어를 친다.
- 자동으로 경로를 잡아주지만 만약 경로가 잘못되는 경우나 찾지 못한 경우 “Specify location” 버튼을 클릭하고 STS 실행파일을 지정해주고 “Install” 버튼 클릭 한다.
- STS를 리부팅 후 Help > About 메뉴 클릭 후 Lombok이 설치된 지 확인한다.
정상적으로 설치된 경우
- 패키지의 build.gradle 에 다음 코드를 추가한 다음 해당 파일 우클릭 Gradle > Refresh Gradle Project
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
- 소스코드를 컴파일할 때 Getter/Setter/Constructor 를 지정된 클래스에 생성해 준다.
- @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 생성하는 어노테이션
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor // 모든 파라미터를 받을 때 사용
@Getter
public class users {
private final int userId;
private final String userName;
}
- AllArgsConstructor를 사용하고 @Setter 어노테이션을 없애고, 필드에 final를 명명하면 한번 설정되고 값이 중간에 변경되지 않도록 하여 데이터의 일관성을 요하는 DB 작업등과 같이 작업할 때 사용 가능하다.
개발 환경 개요
지원 계획 참조
- Java 버전 별 지원 계획 - https://www.oracle.com/java/technologies/java-se-support-roadmap.html
- Spring 버전 별 지원 계획 - https://spring.io/projects/spring-framework/#support
- https://spring.io/projects/spring-boot/#support
Spring 개발 환경 참조
Spring Tool Suite 4
- 다운 받아 더블 클릭을 하여 적절한 위치에 압축을 푼다.
- 압축 푼 폴더에 들어가서 SpringToolSuite4.exe 실행 하면 Spring 을 사용하는 Eclipse가 켜진다.
- Help > Eclipse Marketplace
- 검색어로 Thymeleaf 입력 후 Thymeleaf plugin 설치
- 설치 중간에 약관 동의 해야 함
- 플러그인 설치 후 STS 재시작
새 프로젝트를 만드는 법
첫번째 방법
- File > New > Spring Starter Project
- Packaging을 Jar로 하면 실행 가능한 Jar 파일로 패키징된다. → Tomcat 포함
- Packaging을 War로 하면 War파일로 패키징 되고, 배포 시 용량이 적고, 프로젝트 내용만 있고 Spring, Tomcat등 버전을 맞춰줘야함.
두번째 방법
- 적절히 설정 후 GENERATE
- 초기 파일을 다운 받아 import 하여 사용한다.
Http Client
Http Client의 용도
- Web page를 제공하지 않는 RESTful 서버나 axios 등의 요청을 처리하는 경우 Request를 서버로 날려줄 Client 앱이 있으면 편하다.
- 포스트맨, 인섬니아 등이 있다.
포스트맨 : https://www.postman.com/
인섬니아: https://insomnia.rest/
→ 즉, 백엔드에서의 GET요청을 제외한 POST, PUT, PATCH 등을 테스트로 임의의 요청에 의해 응답을 받아 볼 수 있다.
프로젝트 생성
- File > New > Spring Starter Project
- 설정 후 Next
- Template Engine 에서 Thymeleaf 체크
- Web 카테고리에서 Spring Web 체크
살펴보기
View Template 추가
- /src/main/resources
- templates 폴더에 index.html 파일 추가
- New > File
-index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Hello!!!!</h1>
</body>
</html>
Web Controller 추가
- 만들어진 패키지에서 우클릭 > New > Class
- Name : WebController
-WebController.java
package com.example.hello; // 사용자 패키지 이름
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class WebController {
@GetMapping("/")
public String index() {
return "index";
}
}
실행
- src/main/java 내의 “패키지Application.java” 우클릭 선택 후 Run as > Spring Boot App
- 에티터 하단 화면 콘솔 확인
- Port 번호(프로토콜) 확인
- Started 패키지Application 메시지 확인
Tomcat initialized with port “8080” 이 부분이 포트 번호이다.
- 이떄 실행 시 오류가 나면 포트번호가 겹쳐서 생기는 오류 일수도 있으니 포트번호를 변경해보자.
접속
- http://localhost:포트번호
- 접속 시 index.html 가 표시된다.
유용한 라이브러리
Spring boot devtools
- 소스코드의 수정 사항을 서버 리부팅 없이 적용해준다.
- WebController.java에 해당 내용을 추가하여본다.
@GetMapping("/hello")
@ResponseBody
public String hello() {
return "Hello";
}
- ResponseBody 클래스 import 필요하다. import org.springframework.web.bind.annotation.ResponseBody;
- 서버가 켜진 상태에서 저장 후 http://localhost:포트번호/hello 를 웹 브라우저에서 열어봅니다.
- Spring boot devtools가 없으면 소스코드를 수정해도 서버를 리부팅 하지 않으면 수정 내용이 반영되지 않는다.
- 패키지의 build.gradle 에 다음 코드를 추가한 다음 해당 파일 우클릭 Gradle > Refresh Gradle Project
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Refresh가 적용된 후 서버에 devtools가 추가될 것이다.
Lombok
- Annotation(어노테이션)을 이용해 Getter/Setter 및 Constructor를 자동으로 만들어주는 도구
- 데이터용 클래스에서 작업량을 줄여주고 코드 가독성을 높여준다
- Lombok 플러그인을 먼저 설치해줘야한다.
- https://projectlombok.org/download
- 다운로드 받은 폴더에서 cmd나 쉘을 켜고 “java -jar lombok.jar” 명령어를 친다.
- 자동으로 경로를 잡아주지만 만약 경로가 잘못되는 경우나 찾지 못한 경우 “Specify location” 버튼을 클릭하고 STS 실행파일을 지정해주고 “Install” 버튼 클릭 한다.
- STS를 리부팅 후 Help > About 메뉴 클릭 후 Lombok이 설치된 지 확인한다.
정상적으로 설치된 경우
- 패키지의 build.gradle 에 다음 코드를 추가한 다음 해당 파일 우클릭 Gradle > Refresh Gradle Project
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
- 소스코드를 컴파일할 때 Getter/Setter/Constructor 를 지정된 클래스에 생성해 준다.
- @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 생성하는 어노테이션
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor // 모든 파라미터를 받을 때 사용
@Getter
public class users {
private final int userId;
private final String userName;
}
- AllArgsConstructor를 사용하고 @Setter 어노테이션을 없애고, 필드에 final를 명명하면 한번 설정되고 값이 중간에 변경되지 않도록 하여 데이터의 일관성을 요하는 DB 작업등과 같이 작업할 때 사용 가능하다.