인프런 김영한 님의 "스프링 입문 - 코드로 배우는 스프링부트, 웹 MVC, DB 접근" 기술 강의를 듣고 정리해보려 합니다.
개발환경 - GOORM IDE
1. 구름 IDE에서 컨테이너 생성
구름 IDE 접속 -> 새 컨테이너 생성 -> 소프트웨어 스택 ->
Spring Boot 선택 -> Template Gradle로 설정 후 컨테이너를 생성한다.
강의에선 h2 데이터베이스를 사용한 예재를 진행하는데 h2 데이터베이스를 우분투 환경에 설치하기 귀찮다면
mysql 설치 항목에 체크한 후 mysql로 바꿔서 진행해도 된다.
2. JAVA 버전 & Gradle 업그레이드
강의가 2020년에 처음 나온 강의라서
spring boot - 2.3.1
JAVA - 11
버전을 사용하고 있다.
그런데 구름 ide가 지원하는 spring boot 컨테이너는 놀랍게도 자바 8과 spring boot 2.0.1 을 기본 설정해줘서 업그레이드를 해줘야한다.
# JAVA 11 설치
# apt 업데이트
$ sudo apt-get update && sudo apt-get upgrade
#자바 다운로드
$ sudo apt-get install openjdk-11-jdk
#vi 편집기 사용
$ sudo vi /etc/environment
# 아래 내용 입력 후 저장
$JAVA_HOME="/usr/lib/jvm/java-11-openjdk-arm64"
# 자바 11 버전에 맞는 번호 입력 후 엔터
$ sudo update-alternative --config java
[시간표 자동생성 서비스] 1. goorm 컨테이너 생성 및 Gradle 설치
이게 안되네;; 구름 댕같다 ㄹㅇ참조 링크: https://jjeongil.tistory.com/1402nano창이 뜨면 아래 두 줄을 복사헤서 gradle.sh에 복붙하면 된다.
velog.io
#Gradle 업데이트
#nano 설치
$ sudo apt-get install nano
# gradle 6.5.1 설치
$ wget https://services.gradle.org/distributions/gradle-6.5.1-bin.zip -P /tmp
$ sudo unzip -d /opt/gradle /tmp/gradle-6.5.1-bin.zip
# 환경설정 파일 열기
$ sudo nano /etc/profile.d/gradle.sh
# 아래 두 줄 복사해서 gradle.sh에 입력하고 저장
export GRADLE_HOME=/opt/gradle/gradle-7.1.1
export PATH=${GRADLE_HOME}/bin:${PATH}
# 스크립트 실행 및 환경변수 로드
$ sudo chmod +x /etc/profile.d/gradle.sh
$ source /etc/profile.d/gradle.sh
spring 2.3.x 버전에 맞게 gradle 을 업그레이드 해주자
아래 두 줄은 Goorm ide 컨테이너를 실행할때마다 반복적으로 실행해줘야하는 것 같다.
3. build.gradle 파일 변경
build.gradle 파일이 스프링 2.0.1 버전에 맞게 생성되어있을텐데 바꿔줘야한다.
// build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
}
group = 'io.goorm'
version = '0.0.1'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.assertj:assertj-core:3.11.1'
testImplementation ('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
developmentOnly 'org.springframework.boot:spring-boot-devtools'
// JPA 및 DB 연결을 위한 라이브러리
//implementation 'org.springframework.boot:spring-boot-starter-jdbc'
//implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
//runtimeOnly 'mysql:mysql-connector-java'
//compileOnly 'org.projectlombok:lombok'
//annotationProcessor 'org.projectlombok:lombok'
}
test {
useJUnitPlatform()
}
spring-boot-starter-web : 웹서버(tomcat)과 웹 mvc 기능을 포함한다.
spring-boot-stater-thymleaf : 타임리프 엔진(html 파일 뷰 엔진)
implementation 'org.assertj:assertj-core:3.11.1 : 강의에는 없는데 test 파일 작성중 assertThat을 호출했더니 오류가 생겨서 추가한 라이브러리.
spring-boot-stater-test : 테스트 파일 작성용
org.springframework.boot:spring-boot-devtools : html파일 수정시 실시간 반영을 위한 라이브러리 .. 라고 하는데 작동을 안한다.
4. application.properties 수정 및 url과 포트 설정
server.port=${PORT:8080}
# 이 설정을 추가 안해주면 나중에 빈 추가 및 오버라이딩 관련 오류가 발생했다.
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
이후 상단의 프로젝트 -> 실행 url과 포트 에서
실행용 url이 있는지 연결 포트가 8080으로 설정 되어있는지 확인하고 없으면 새로 생성한다.
5. Spring 서버 시작해보기
$ gradle build
$ cd build/libs
$ java -jar spring_boot-0.0.1.jar
서버가 잘 열리면 성공이고 잘 안되면
1. gradle --version , java --version 을 통해 제대로 설치되었는지 확인해보자.
2. build.gradle 파일이 제대로 수정됐는지 확인해보자.
'Spring > Spring 기본' 카테고리의 다른 글
사지방에서 Spring boot 공부하기 #6 - Autowired와 자동 의존관계 주입 (0) | 2023.05.08 |
---|---|
사지방에서 Spring boot 공부하기 #5 - 스프링 빈 등록과 조회 (0) | 2023.04.22 |
사지방에서 Spring boot 공부하기 #4 - 스프링 빈이란? (1) | 2023.04.18 |
사지방에서 Spring boot 공부하기 #3 - IOC와 DI (0) | 2023.04.16 |
사지방에서 Spring boot 공부하기 #2 - 스프링과 객체지향 (2) | 2023.04.16 |