후라이

Spring Boot - 스프링 입문 (1) 본문

Spring

Spring Boot - 스프링 입문 (1)

힐안 2024. 1. 6. 12:24

 

 

 

이번 포스트에서는

 

스프링 부트 기초 지식

환경 설정

 


 

 

스프링이란?

:

자바 기반의 오픈소스 어플리케이션 프레임워크

-> 엔터프라이즈(대규모의 복잡한 데이터를 다루는) 어플리케이션 개발을 위한 다양한 기능과 서비스 제공

 

- 의존성 주입(Dependency Injection) : 객체 간의 의존성 관리 & 제어

- 제어의 역전 (Inversion of Control) : 제어의 역전을 통해 어플리케이션의 흐름을 프레임워크가 제어하도록 함

- 모듈화

- 관점 지향 프로그래밍 (AOP: Aspect-Oriented Programming) : 코드의 재사용성과 유지보수성 향상

- 트랜잭션 관리

- 데이터 액세스

-모델-뷰-컨트롤러(MVC) 아키텍처

- 보안(시큐리티)

 

스프링 부트란?

:

스프링 프레임워크의 일부로 개발

스프링 기반의 어플리케이션을 더 쉽게 개발하고 실행할 수 있도록 도와주는 프로젝트

 

- 스타터 패키지(Starter)

- 자동 구성(Auto-Configuration)

- 내장 서버 지원(ex. Tomcat, Jetty)

- 프로덕션 준비 기능

- 스프링 부트 스타터 사이트 : 원하는 스타터 패키지를 선택하고 설정을 생성 -> 초기 프로젝트 설정을 쉽게 시작

- 외부 설정 : 환경 설정을 외부로 분리하여 관리

 


 

 

스프링 프레임워크가 가지는 특성들은 코드 실습을 진행해보면서 익혀보도록 하자.

 

<인프런_스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술> 강의를 기반으로 합니다.

 

환경 설정

 

- Spring Boot 설치

- intellij 설치 (자바는 17이상으로 설치)

 

 

 

Spring initializr에서 GENERATE 된 파일을 다운

IntelliJ에서 open folder로 위에서 수행한 파일을 open

 

 

 

 

 

 

이렇게 기본적으로 만들어진 여러 패키지와 파일들을 볼 수 있다!

 

우선, main인 HelloSpringApplication을 Run 시켜본다.

-> 실행되지 않을 수도 있는데 (내가 그랬음) File을 눌러서

 

 

 

 

 

 

Build and run using : IntelliJ IDEA

Run tests using : IntelliJ IDEA

 

이렇게 바꿔주어야 제대로 실행이 된다.

 

 

 

 

 

실행시킨 후에 localhost:8080으로 접속하면 만들어진 웹 페이지를 볼 수 있는데

포트번호 application.properties에서 8090으로 바꿈

8080은 이미 쓰고 있어서,,

 

파일에 server.port = 8090 이라고 쓰면 됨!

 

 

 

이렇게 뜨면 성공!

 

 

이렇게 하면 1차적인 환경 설정은 끝!

 


 

라이브러리 살펴보기

 

src 폴더 밑에는

* main - java / resources

resources는 자바 파일 이외의 파일들이 들어간다고 생각하면 됨 (html, js, yml,,)

* test

test는 어플리케이션의 정확성, 성능, 안정성 등을 검증하기 위해 사용됨

-> 실제 어플리케이션 코드를 수정하지 않음

개발자가 작성한 코드가 의도대로 잘 구현되는지 "test"만 실행 

 

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.1'
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'hello' //우리가 설정한 소스
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17' //자바 버전
}

repositories {
	mavenCentral() //밑에 의존성으로 추가한 라이브러리들을 mavenCentral()에서 가져온 것
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' //html만드는 템플릿 엔진
	implementation 'org.springframework.boot:spring-boot-starter-web' //web project
	testImplementation 'org.springframework.boot:spring-boot-starter-test' //요즘에는 test가 기본적으로 들어감
}

tasks.named('test') {
	useJUnitPlatform()
}

 

build.grdle code

 

 

1. dependencies : 의존 관계를 끌어옴

Gradle: org.sprintgraework.spring-boot:sprint-boot-starter-web

나는 starter만 필요하지만 starter도 다른 라이브러러와 의존함 -> core까지 끌어다 옴

# Gradle은 의존관계가 있는 라이브러리를 함께 다운로드한다.

 

 

"스프링 부트 라이브러리"

- spring-boot-start-web

 - spring-boot-starter-tomcat : 톰캣(웹서버)

 - spring--webmvc : 스프링 웹 MVC

- spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진 (View)

- spring-boot-starter(공통) : 스프링 부트 + 스프링 코어 + 로깅

 -spring-boot

  -spring-core

 spring-boot-starter-logging

  - logback, slf4j

 

 

"테스트 라이브러리"

- spring-boot-stater-test

 -junit : 테스트 프레임워크

 -mockito : 목 라이브러리

 - assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리

 -sprint-test : 스프링 통합 테스트 지원

 

 

cf) 실무에서는 log를 쓰지 system.out.println() 은 안 씀

--> log가 오류 모으기도 편하고 실무에서 유용

ch.qos.logback:logback-classic:1.2.3

org.sif4:jul-to-sf4j:1.7.30