230210 SpringBoot 기초
Spring Boot
스프링 부트에서 학습목표
1. gradle빌드툴
2. builder패턴
3. 타임리프 뷰 템플릿
4. 유효성 검사 방법
5. Persistentent Framework(영속성 프레임워크) 마이바티스
6. JPA and hibernate란? -아직까지 많이 사용되지 않는 기능
7. 메시지컨버터 REST API
8. 판매자 매니저 프로젝트
JSP vs 스프링 vs 스프링부트
수동적 코드 vs 부분적 수동 코드 vs 전자동 코드
스프링부트-autoConfig
스프링과 스프링부트 차이점
그레이들 사용은 선택. 메이븐과 같이 사용하기도 한다.
xml파일이 자바파일과 Application.properties라는 파일로 바뀌는데, 여기에 키=값의 형태로 지정만 하면 자동으로 된다.
데이터베이스처리는 Mybatis가 아직 주를 이룬다. JPA라는 기능도 있다.
Thymleaf(html) or JSP 등등. 스프링부트는 서버의 역할만 한다.
어노테이션은 스프링과 동일하고, 부가적으로 사용할 수 있는 것들이 생긴다.
그레이들(gradle)
프로젝트의 필요한 라이브러리를 연결해주고, test, 빌드(배포를 위한 준비) 등을 위한 플랫폼(도구)
메이븐 플랫폼의 xml의 단점을 보완하여 새롭게 개선된 빌드를 제공한다.
프로젝트에 필요한 라이브러리를 설정으로 바로 사용할 수 있다.
다운로드된 라이브러리는 C드라이브 계정 .gradle이란 폴더 caches modules-2 files
STS 4버전은 뷰 화면이 없다. jsp나 html파일 등을 만드는 기능이 없음.
이클립스-우클릭-new
Spring Starter project가 spring boot 프로젝트
Packaging
War : 서버형태. War로
Gradle-Groovy
설정.
언어는 java
자바버전은 11로 맞춘다. 스프링부트에선 11이상이어야 정상동작한다.
Group은 com.simple로
Artifact는 basic으로
※스프링부트는 베이스패키지가 굉장히 중요.
쉽게 바꿀 수 없다.
스프링부트에서는 반드시 베이스패키지 아래에 모든 파일이 들어가야 한다.
Group과 Artifact와 맞춘다.
next
Spring Boot Version
스프링부트는 버전이 상당한 영향을 미친다. 버전에 따라 라이브러리가 서로 동작하거나 안할 수 있다.
2.7.8 버전으로.
Available에서
최소설정.
spring Boot Devtool, spring web
이 두개는 필수. 체크
next, finish!
우측하단에서 생성중 확인가능
끝나면 생성완료.
Test용 생성 - sts3버전에서(3버전에서도 boot 사용 가능)
src/main/resources
- templates : 폴더이자 패키지. 화면 코드 작성.
- static : 정적 파일 저장(css, js)
- application.properties : 키랑 값으로 이루어진 설정파일. 기본으로 제공하는 키를 이용해서 기본 설정 파일
- src/test/java-테스트
- build.gradle : porm.xml을 대신함
src폴더 안에 main과 test폴더가 있는데, 비어 있다. 화면이 없으니 여기는 비어있는 상태로 유지됨.
Project and External Dependencies
spring-boot-starter로 이루어진 애들이 자동으로 해주는, autoConfig애들
톰캣이 내장으로 되어 있다. 서버를 달지 않아도 자동으로 돌아감.
->Spring Boot는 기존 서버들로 돌리지 않는다. 내장톰캣으로 실행함.
Boot Dashboard제공.(window-show view-other에서 찾을 수도 있음)
local의 BootTest[devtools]의 버튼으로 실행. ctrl+f11이 아님!!!!!
지금 실행하면 실패한다. 포트번호가 중복되기 때문.
->src/main/resources의 application.properties에서
server를 치면 기본 키값들이 뜬다. 기본제공되는 키값들임.
server.port=8383으로. 공백이 없어야 한다.
저장하고 똑같이 버튼으로 실행!
콘솔의 AC를 해제하면 렉 없이 볼 수 있다.(인코딩 형식이 있어 느리다. sts4에서는 패치해서 빠르다.)
실행해도 springboot는 화면이 없으니 화면이 뜨지 않는다.
src/main/java에서 ServletInitializer.java과 BootTestApplication확인
BootTestApplication을 보면 java의 main으로 이루어져 있음을 확인할 수 있다.
이 내용들을 보면(자바 run 환경이 com.simple.basic으로 되어 있다.),
com.simple.basic밑으로 하위패키지로 들어가지 않으면 실행되지 않는다는 것을 알 수 있다.
=>com.simple.basic에서 우클릭하고 new를 해서 파일들을 생성할 것. 패키지명은 com.simple.basic.~~로.
test용이니 화면을 보기 위해 com.simple.basic.controller만들고 안에 TestController만들기. 크롬창에서 경로 localhost:8383입력.
@Controller
public class TestController {
@GetMapping
public void test() {
System.out.PrintLn("실행됨");
}
}
springboot는 리로드가 굉장히 빠르다. 내장톰캣이 있어 코드를 수정하면 바로바로 리로드된다.
크롬창은 localhost:8383으로 입력해서 들어가기(요청을 넣는 것. 당연히 오류다. 화면이 없다. 테스트용)
1.코드를 수정하고 저장하면 자동리로드된다.
2.저장후 테스트용으로 킨 브라우저 화면에서 다시 경로로(똑같이 localhost:8383으로 요청) 들어가면 콘솔창이 실행된다.
외부톰캣으로 실행하면(or ctrl+f11로 실행) WEB-INF폴더, web.xml파일들이 생겨버린다. 내장톰캣으로 실행할 것!
잘못돌려서 생성되면 지워버리면 됨.
@Controller를 @RestController
하고 함수를 void가 아닌 String으로 바꾸고 문자열을 return하면 화면에 문자열이 뜬다.
package com.simple.basic.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController//스프링부트는 RestController
public class TestController {
@GetMapping
public String test() {
return "실행됨";
}
}