spring.io
jar 압축 풀기
압축 풀기
setting
General - Content Types - Java Class File - Default encoding > UTF-8
General - Workspace - Text file encoding > Othder: UTF-8
Java - Instaled JREs : 설정
MarketPlace
find: web 검색
3개 체크
confirm - agreements - finish
자동 재시작
Window - preferences - Web 생김 - CSS, HTML, JSP : UTF-8
다시 Marketplace - find: spring
3.9.14 RELEASE - Install - agree - confirm - finish
프로젝트 생성
file - new - Spring Starter Project
Spring Boot Version : 3 이상으로 가려면 JDK 17 이상으로 가야 함
>> 2.7.17
Web - Spring Web
로젝트 생성 후 pom.xml 들어가보면
project 태그에 에러가 떠 있음
https:maver~~~ 부분에 에러가 있는데
http 로 s 를 지워주면 됨
# 스프링 부트의 장점
1. 라이브러리 관리 자동화
: 스프링 부트에서는 스타터(starter)라는 것을 이용해 특정 기능에 필요한
라이브러리의 의존성을 간단하게 처리할 수 있다.
2. 설정의 자동화
: 프로젝트에 추가된 라이브러리를 기반으로 실행에 필요한 환경을 자동으로 설정해 준다.
3. 라이브러리 버전 자동관리
: 스프링 부트 버전에 해당하는 스프링 라이브러리 뿐만 아니라,
의존 관계에 있는 서드파티 라이브러리도 호환되는 버전으로 다운로드 해준다.
4. 테스트 환경과 내장 톰켓
: 스프링 부트로 생성한 프로젝트에는 JUnit 을 비롯한 테스트 라이브러리들이
기본적으로 포함되어 있고, 톰켓서버를 내장하고 있기 때문에 빠르게 실행 결과를 볼 수 있다.
package com.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*
* # @SpringBootApplication
* - SpringBoot Apllication을 시작하는데 필요한 구성을 자동으로 수행
*/
// 이 하위에 있는 모든 빈들을 생성처리 해 줌
// 어플리케이션에 필요한 구성을 자동으로 처리 해 줌
// 기본 패키지에 붙어 있음
// main method 도 들어 있음
@SpringBootApplication
public class P01BasicsApplication {
public static void main(String[] args) {
// SpringApplication.run(P01BasicsApplication.class, args);
// 자바 application 으로 실행
SpringApplication application = new SpringApplication(P01BasicsApplication.class);
application.setWebApplicationType(WebApplicationType.NONE);
application.run(args);
}
}
# 앱 설정 파일
# WebApllication Type Setting : 스프링 MVC 기반으로 웹 애플리케이션 구동
spring.main.web-application-type=servlet
# 톰켓 서버 포트 변경
server.port=8080
< memo.txt >
# @RestController 사용
- RESTful 웹 서비스를 제공하는 컨트롤러 클래스를 정의할 때 사용됩니다
이 애너테이션을 사용하면 해당 컨트롤러가 HTTP 요청에 응답하고,
JSON 또는 XML 형식의 데이터를 반환할 수 있습니다
- JSP 같은 뷰(View)를 별도로 만들지 않는 대신에 컨트롤러 메서드가 리턴한
데이터 자체를 클라이언트로 전달합니다
- 클라이언트에 전달되는 데이터는 대부분 문자열, VO 이거나 컬렉션 형태의 자바 객체 인데
자바 객체가 전달되는 경우 자동으로 JSON 으로 변환하여 처리합니다
# Spring Boot Starters 추가
- 프로젝트명 마우스 우측 클릭 -> Spring -> Add Starters
# Spring Boot Devtools
- 컨트롤러에 새로운 메서드가 추가되면 반드시 실행 중인 애플리케이션을 중지하고 애플리케이션을
재실행해야 합니다. 이때 컨트롤러를 수정할 때 마다 매번 애플리케이션을 재실행하는 것이
귀찮으면 스프링 부트가 제공하는 DevTools 기능을 이용합니다
# Lombok 라이브러리 사용
- 롬복을 사용하면 자바 파일을 컴파일 할 때 자동으로 생성자, getter, setter, toString 등의
코드들을 자동으로 추가해줌
- Spring Boot Starters 추가
- 롬복 라이브러리는 의존성 추가만으로 사용할 수 없다
- 롬복을 사용하려면 별도로 이클립스 설치 폴더에 롬복 라이브러리를 추가해야 한다.
- 프로젝트 우클릭 - Spring - add starter - devel tool 에 있음
- lombok 스타터 추가 후 이클립스 종료
-> https://projectlombok.org/
-> 상단 Download
-> lombok.jar 다운로드
- cmd 롬복 다운로드한 폴더로 이동 (관리자 권한
-> java -jar lombok.jar 명령어 실행
-> Specify location...
-> 이클립스exe 경로 찾기
- exe 파일 체크 -> 진행 -> 이클립스 실행 폴더내에 lombok.jar 추가 돼 있음
------------------------------------------------------------
- lombok 제공 @
> @~~ 기능
@Getter, @Setter getter, setter 메소드를 만들어 줌
@ToString 모든 멤버 변수의 값을 문자열로 열결하여 리턴하는 toString() 만들어줌
@RequiredArgsConstructor 모든 멤버 변수를 초기화하는 생성자를 만들어 줌
@EqualsAndHashCode equals(), hashCode() 메서드를 만드어 줌
@Data 위 모든 항목을 포함
package com.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
//@ComponentScan(basePackages = {"com.web", "com.test"}) // 생성할 빈 package 이름 basePackages 값에 넣어주면 됨
public class P02BeginApplication {
public static void main(String[] args) {
SpringApplication.run(P02BeginApplication.class, args);
}
}
package com.web.controller;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/*
* # @RestController
* - RESTful 웹 서비스를 제공하는 컨트롤러 클래스를 정의할 때 사용됩니다
* @RestController 을 사용하면 해당 컨트롤러가 HTTP 요청에 응답하고,
* JSON 또는 XML 형식의 데이터를 반환할 수 있다
* - JSP 같은 뷰(View)를 별도로 만들지 않는 대신에 컨트롤러 메서드가 리턴한
* 데이터 자체를 클라이언트로 전달
* - 클라이언트에 전달되는 데이터는 대부분 String, VO, Collection 형태의 자바 객체인데
* 자바 객체가 전달되는 경우 자동으로 JSON 으로 변환하여 처리
*/
import com.web.vo.BoardVO;
@RestController
public class BoardController {
public BoardController() {
System.out.println("- BoardController -");
}
// @GetMapping("/hello")
// public String hello() {
// return "boot_start";
// }
@GetMapping("/hello")
public String hello(String data) {
return "data - "+ data;
}
// VO 객체 반환
@GetMapping("/getBoard")
public BoardVO getBoard(){
BoardVO vo = new BoardVO();
vo.setSeq(1);
vo.setTitle("vo test");
vo.setWriter("테스트");
vo.setContent("sadasfasdgafs");
vo.setCreateDate(new Date());
vo.setCnt(0);
return vo;
}
// Collection 반환
@GetMapping("/getList")
public List<BoardVO> getList(){
List<BoardVO> list = new ArrayList<>();
for(int i=0; i<2;i++) {
BoardVO vo = new BoardVO();
vo.setSeq(i);
vo.setTitle("vo test : " + i);
vo.setWriter("테스트 : " + i);
vo.setContent(i + " 번 내용입니다.");
vo.setCreateDate(new Date());
vo.setCnt(i*2);
list.add(vo);
}
return list;
}
}
package com.web.vo;
import java.util.Date;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class BoardVO {
private int seq;
private String title;
private String writer;
private String content;
private Date createDate = new Date();
private int cnt;
}
프로젝트 우클릭 - Spring - add starter - Spring Boot DevTools
DevTools 가 적용된 프로젝트는 프로젝트명 우측에 DevTools가 적혀 있음