본문 바로가기
SpringBoot/이론

[ Spring Boot ] 스프링 부트 개념 및 설치, 초기 설정 방법

by Hwanii_ 2023. 9. 13.
728x90

1.

스프링 부트 ?

자바 기반의 웹 애플리케이션 개발을 간편 하게 만들어주는 오픈 소스 프레임 워크 이다.

스프링 프레임워크를 기반으로 한다.

 

2.

스프링 부트의 특성 ?

 

1)

웹 서버 (톰캣) 가 기본적으로 내장 되어 있다.

따라서 스프링 부트에서는 웹 서버를 따로 연결 하지 않아도 웹 브라우저를 열 수 있다.

 

2)

스타터 프로젝트 (Starter Project) 를 사용 한다.

라이브러리와 라이브러리의 버전을 자동으로 관리해주는 프로젝트 이다.

.xml 파일 설정 대신에 @ 어노테이션 위주로 설정 한다.

 

3)

스프링 부트는 gradle 을 사용 한다.

 

4)

gradle 이란 ?

 

오픈 소스 빌드 자동화 도구로, Groovy 및 Kotlin 과 같은 동적 언어를 사용 한다.

위와 같은 동적 언어를 사용 해서, 빌드 스크립트를 작성 할 수 있는 플러그인 기반의 빌드 시스템.

 

5)

gradle / maven ?

 

기존 스프링 프레임워크 에서는 라이브러리 추가 및 관리를 pom.xml 파일에서 설정 했다.

이 pom.xml 파일은 maven 하고 잘 사용 되며, 

그동안 스프링 프레임워크 에서는 maven 을 사용 했었다.

스프링 부트 에서는 maven이 아닌 gradle 을 사용 한다.

 

요새는 maven 대신에 gradle 을 사용 하는 추세 이다.

 

3.

스프링 부트 설치 방법

 

아래의 링크에 접속 하여 본인에게 해당 되는 어플리케이션을 설치 한다.

 

https://spring.io/tools

 

Spring | Tools

 

spring.io

 

어플리케이션을 설치 하면 아래와 같은 아이콘이 설치 된다.

 

 

이것을 더블 클릭 하여 압축 해제 를 진행 한다.

 

만약에 설치가 되지 않으면,

cmd 창을 열고,

java - jar 을 입력 하고,

한칸 뛰고,

위의 어플리케이션이 있는 경로를 복사해서 붙혀 넣고 엔터를 누르면 압축이 해제 된다.

 

 

 

이렇게 폴더가 생성 되고, 내부에 들어 가면,

 

 

위의 아이콘을 클릭 해서 스프링 부트를 들어간다.

 

4.

스프링 부트 설치 및 설정

 

1)

인코딩 설정을 우선적으로 진행해 준다.

 

 

2)

프로젝트를 생성 한다.

 

 

Spring Starter Project 를 클릭 한다.

 

3)

설정은 아래와 같다.

 

 

Service URL : https://start.spring.io 으로 기본 세팅 되어 있고,

 

Name : 프로젝트명을 작성 한다.

 

Type : Gradle - Groovy

(스프링은 Gradle 자동화 도구와 같이 사용 된다고 했다)

 

Packaging : War

(톰캣으로 돌아가는 웹 어플리케이션 배포 이기 때문에 War (와르 파일) 으로 설정 한다)

(자바 컴파일러가 번역해주는 파일은 Jar (자르 파일) 이다)

 

Java Version : 본인의 자바 버전으로 맞춰 준다.

 

Language : Java

 

Group : 팀 이름, 회사 이름, 프로젝트 이름 등등

 

Artifact : Name과 동일

 

Version : 0.0.1-SNAPSHOT

 

Description : Demo project for Spring Boot

 

Package : 무엇을 만들건지 작성 한다.

 

Next 클릭

 

4)

Spring Boot Version

 

 

Available : 

 

 

Spring Web 을 선택 한다.

 

Spring MVC 를 관리 하는 설정이고,

 

그밖에 jdbc, MyBatis 등 여러 가지 설정을 추가 할 수 있다.

 

5)

Finish

 

 

를 클릭하고, 우측 하단에 import 가 모두 완료 될 때 까지 기다린다.

 

 

위와 같이 아무것도 뜨지 않으면 import 가 끝난 것이다.

 

import가 잘됬으면 Console 창에 아래와 같이 출력 된다.

 

 

6)

 

 

위와 같이 [boot] 라고 뜨면 성공적으로 프로젝트가 생성된것이다.

 

5. 

여러 가지 개념 정리

 

1)

프로젝트 내부 폴더

 

 

src/main/java 폴더 : 

java 파일을 관리하는 폴더 이다.

 

src/main/resources/static 폴더 : 

정적 리소스를 관리하는 폴더 이다.

 

정적 리소스란 ?

html, css, javascript, file, .. 등등 이다.

 

src 폴더 :

동적 리소스를 관리하는 폴더 이다.

 

동적 리소스란 ?

jsp, .. 등등 이다.

 

2)

프로젝트 내부 설정 파일

 

기존 스프링 프레임워크 에서는 .xml 설정 파일에서 설정을 했지만,

스프링 부트 에서는 .properties 으로 끝나는 확장자에 설정을 작성 한다.

 

 

 

위와 같은 방식으로 작성을 할 수 있다.

 

또한,

 

 

build.gradle 이라는 코끼리 모양의 설정 파일이 있다.

 

기존 스프링 에서는 라이브러리 의존 주입을 했던 설정 파일이 pom.xml 이지만,

스프링 부트 에서는 build.gradle 에서 의존 주입을 하고, 버전을 자동으로 관리해준다.

 

pom.xml 파일 보다 훨씬 코드가 간결해진것을 확인 할 수 있다.

 

plugins {
	id 'java'
	id 'war'
	id 'org.springframework.boot' version '3.1.3'
	id 'io.spring.dependency-management' version '1.1.3'
}

group = 'com.hwan'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

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

 

3)

스프링 부트의 Boot Dashboard

 

좌하단을 보면, 아래와 같은 창이 있다.

 

 

첫번째 빨간네모 + 초록 재생버튼 아이콘을 클릭 하면, 서버를 열 수 있다.

 

클릭하면, 콘솔창에 아래와 같이 뜨게 된다.

 

 

웹 브라우저를 열려면, 지구 모양 아이콘을 클릭 하면 된다.

 

 

[ 복 습 정 리 하 기 ]

 

1.

스프링 이란 ?

 

IoC와 AOP를 지원하는 경량의 프레임 워크.

 

IoC : Inversion of Control

제어의 역행

낮은 결합도

 

AOP : Aspect Oriented Programming

관점 지향 프로그래밍

높은 응집도

관련 있는 기능끼리 분리해서 개발하므로, 유지보수 용이 및 코드의 가독성 증가

 

2.

컨테이너 ?

 

객체를 생성 하고 관리해주는 기능을 하는 주체.

 

스프링은 객체를 생성 하고 관리해주는 기능을 하는 주체이므로,

스프링 자체를 컨테이너 라고 부를 수 있다.

 

컨테이너는 객체들 사이의 의존성을 주입 해준다.

DI : Dependency Injection

 

제어권이 컨테이너 에게 넘어 갔다.

== 제어의 역행 == IoC == Inversion of Control

 

3.

의존성 이란 ?

 

예시 01 :

 

class A {
	private B b;
    	private C c;
}

 

위와 같이 멤버변수로 b, c 객체를 가지고 있는 A 클래스가 있다.

 

A 클래스의 객체는 객체 b, c 를 사용 한다.

 

A 객체는 b, c 객체의 기능에 "의존" 하게 된다.

 

예시 02 :

Controller 는 Service 레이어에 의존 하고, Service 레이어는 DAO의 기능을 사용 한다.

 

4.

의존 주입의 방법 ?

 

setter 주입 :

"주로" b, c 객체가 외부에서 생성이 이미 되어 있어서,

a 객체를 외부에서 주입해서 사용 하고 싶을 때 활용 한다.

 

생성자 주입 (Construtor) :

"주로" a 객체를 생성 할 때, b, c 객체가 반드시 필요해서,

 b, c 객체를 a 객체의 생성자 메서드 내부에서 생성 할 때 활용 한다.

 

항상 그렇다는것은 아니고, "주로" 그렇다.

 

5.

IoC 의 장점 이란 ? 

 == 제어의 역행 == 내가 직접 객체를 생성 X

 

개발자가 직접 new == 객체화 == 인스턴스화 를 하지 않으면,

코드의 결합도가 낮아 진다.

즉,

코드 유지 보수가 용이해진다.

 

6.

OOP == 객체 지향 프로그래밍 에서,

결합도를 낮추면 개발자가 직접 관리해야 하는것들이 감소 한다.

즉,

코드 유지 보수가 용이해진다.

 

6.

이제까지 공부했던 (소프트웨어 == 어플리케이션) 디자인 패턴

 

1)

팩토리 패턴

 

객체명으로 객체를 반환 할 수 있도록 해주는 패턴.

이미 메모리에 생성 되어 있던 (적재 == load) 객체를 반환 받는다.

즉,

코드의 결합도가 낮아 진다.

 

2)

MVC 패턴

 

각각의 파트별로 코드를 분할 해서 관리 하는 패턴.

높은 응집도.

낮은 결합도.

유지보수용이.

 

3)

템플릿 패턴

 

JDBC 와 같은 반복적인 로직에 주로 활용 된다.

코드의 가독성을 높혀 준다.

 

4)

싱글톤 패턴

 

메모리에 같은 타입의 객체는 하나씩만 생성 될 수 있도록 관리 하는 패턴.

반응형