Spring Boot

230210 SpringBoot 기초

주영재 2023. 2. 10. 18:59

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 "실행됨";
	}
}