본문 바로가기
Spring Boot

230210 Spring Boot 설치, 프로젝트 생성, DB연결

Spring Boot 설치

최신버전으로

spring 공홈에서
Spring tools 4 for eclipse

Course에 boot폴더 만들고 다운받은 jar파일 가져와서 더블클릭으로 실행하거나 zip으로 바꿔서 실행

(반디집으로 실행하면 안에서 zip파일 가져와서 압축해제하면 됨).
더블클릭으로 실행하면 sts-4.17.2.RELEASE폴더 생성
boot폴더에 work폴더 만들고,
이 안에 SpringToolSuite4.exe(sts파일)파일이 있다. 이걸로 실행
workspase는 work폴더로 지정.


STS 4버전은 뷰 화면이 없다. jsp나 html파일 등을 만드는 기능이 없음.
->java web developer 설치

이클립스 Help의 Eclipse Marketplace로.
여기서 Eclipse Web Developer Tools 3.28 install,
하면 기본값들이 체크되어 있다. 기본만 선택하고 Confirm,
accept하고 finish,
다 설치하면 Trust창이 나온다. select All 하고 trust selected,
하면 restart하겠냐는 창이 나옴. restart!

하고, window preference에서 encoding
-workspace, css, html, xml files utf-8로 적용


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으로. 공백이 없어야 한다.
저장하고 똑같이 버튼으로 실행!

src/main/java에서 ServletInitializer.java과 BootTestApplication확인
BootTestApplication을 보면 java의 main으로 이루어져 있음을 확인할 수 있다.
이 내용들을 보면(자바 run 환경이 com.simple.basic으로 되어 있다.), 

com.simple.basic밑으로 하위패키지로 들어가지 않으면 실행되지 않는다는 것을 알 수 있다.
=>com.simple.basic에서 우클릭하고 new를 해서 파일들을 생성할 것. 패키지명은 com.simple.basic.~~로.


springboot는 리로드가 굉장히 빠르다. 내장톰캣이 있어 코드를 수정하면 바로바로 리로드된다.
코드를 수정하고 저장하면 자동리로드된다. 


외부톰캣으로 실행하면(or ctrl+f11로 실행) WEB-INF폴더, web.xml파일들이 생겨버린다. 내장톰캣으로 실행할 것!
잘못돌려서 생성되면 지워버리면 됨.


프로젝트 생성 spring starter project

BootBasic으로


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
이 두개는 필수. 체크
lombok, mysql driver, oracle driver 체크


build.gradle

여기서 위의 설치했을 때 설정들을 수정하는 것도 가능.


dependecies를 보면

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	runtimeOnly 'com.mysql:mysql-connector-j'
	runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
	annotationProcessor 'org.projectlombok:lombok'
	providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

가 기본으로 생성되어 있다.

  • compileonly-컴파일할떄만 
  • runtimeonly-실행할때만
  • implementation-기본으로 사용

 



이 모듈은 maven repository에서 
gradle/gradle(short)에서 볼 수 있음. +)이전에는 maven으로 받았다.
이때, 가져올 때 버전을 생략하면 스프링부트 버전에 자동으로 맞춰준다.


Database 연결


application.properties

driver-class-name,url,username,password만 입력하면 됨.
히카리풀, 커넥션 작업을 전부 자동으로 처리해준다.

server.port=8383

############# 데이터베이스 연결, 커넥션 풀 자동으로 연결 #############
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring?serverTimezone=Asia/Seoul
spring.datasource.username=spring
spring.datasource.password=spring


추가하고 저장하면 어떤 창이 뜬다. save utf-8로 저장.

서버 실행(local bootBasic에서 버튼으로)
잘 실행되면 db와 연결이 잘 됐다는 뜻.

이때, 프로젝트 실행 시 데이터베이스 연결이 반드시 선행 작업이 된다.


+a

springboot는 JPA모듈이 있다.
이 모듈을 넣으면 log정보를 확인할 수 있다.
이 모듈은 선택사항임.


maven repository에서 Spring Boot Starter Data JPA검색
아무거나 가져와서 버전 지우면 자동으로 springboot에 맞춰줌

build.gradle에 추가하고 build.gradle 우클릭해서 Gradle-Refresh gradle Project
maven update와 똑같음.

 

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    
    				...
}


하고 서버를 재시작하면 Hikari-pool아래 구문으로 db연결이 되었음을 확인할 수 있다.

주석처리하고 refresh gradle 하기.

 

지금은 확인용으로 사용했다.