이제부터 스프링 부트 서버를 "공부 및 제작" 할 것이다.

 

스프링부트는 차세데 스프링 프레임워크 이다. 스프링 부트는 개발 방식을 단순화한다.

스프링 부트는 탄탄하고 확장성 좋은 스프링 앱을 개발하는 방향으로 베스트 프랙티스를 따르도록 인도하는 독자적인 기술의 결집체이다.

 

아주 간단한 스프링 웹 애플리케이션도 J2EE 스택 및 스프링 프레임워크에 관한 몇 가지 개발 규칙은 지켜야 한다.

 

웹 아카이브(WAR) 파일 내부 구조는 다음과 같다.

 - WEB-INF 폴더는 반드시 필요하고, 하위에 lib, classes 폴더를 둔다.

    - lib 폴더엔 서드파티 라이브러리,

    - classes  폴더엔 웹 애플리케이션 클래스를 넣는다.

- 필요시 JSP, HTML, CSS, 이미지, 자바스크립트 파일을 넣는다.

- web.xml 파일에 디스패처 서블릿을 선언한다.

- <서블릿명>-servlet.xml 형식의 스피링 빈 구성 파일이 필요하다.

 

war 파일은 유틸리티로 패키징한다.

war 파일은 톰캣, 제티, 제이보스, 웹스피어 같은 "애플리케이션 서버 또는 컨테이너" 에 올려놓고 실행하거나, J2EE 앱을 배포하는 전용 서버를 따로 운용하기도 한다.

 

-- 웹 아카이브의 구조 및, 웹 아카이브로 패키징 해야 한다는 것, 그리고 이 war 파일을 실행하는 데 필요한 것. --

 

몇빈 선언 시점에 스프링 XML 스키마를 올바르게 교정하는 STS 같은 IDE 부터, 요맨 같은 외부 도구에 이르기까지, 구조를 바로 잡고 틀에 박힌 구성코드를 일일이 입력하지 않게 해주는 도구는 여럿 있다.

 

package com.example.wphomepage;

import com.example.wphomepage.journal.Journal;
import com.example.wphomepage.journal.mapper.JournalMapper;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class WpHomepageApplication {

    @Bean
    InitializingBean saveData(JournalMapper repo) {
        return () -> {
            repo.insert(new Journal("스프링부트 입문", "난 언제나 다시 복습하지", "05/26/2019"));
            repo.insert(new Journal("스프링부트 입문", "난 언제나 다시 복습하지", "05/26/2019"));
        };
    }

    public static void main(String[] args) {
        SpringApplication.run(WpHomepageApplication.class, args);
    }

}

 

 옛날에 작성했던 코드를 붙였다. 5월 26일날 복습했던 기본 코드다.

지금 다시 복습하니 3개월 만에 다시 보는 꼴이다.

 

여기서 public static void main 함수 부분을 보자.

 

SpringApplication.run 부분을 찾을 수 있다.

 

-SpringApplication 은 스프링 앱을 간편히 초기화하는 특별한 클래스이다. 

-스프링 부트로 애플리케이션을 개발하면 XML 구성 파일이 거의 필요 없다.

-여기서는 사용되지 않았지만, SpringApplicationBuilder 라는 연결형 빌더 API 가 있는데, 여러 앱 컨텍스트를 계층화할 수 있다.

앱을 좀 더 세세히 다룰 수 있는 장치라고 보면 된다.

 

 

-스프링 부트는 '독자적인' 기술이므로, 스프링 부트를쓰면 웹 애플리케이션이든 단독형(standalone) 앱이든 어떤 타입의 앱이더라도 올바르게 개발할 수 있다.

-스타터폼으로 의존체를 알기 쉽게 구성, 관리할 수 있다. 가령 웹 애플리케이션을 개발할 때는 메이븐 폼 또는 그레이들 빌드 파일에 spring-boot-starter-web 의존체를 추가한다.

 

 

일단 거두절미하고 스프링 부트 CLI 를 설치해보자.

설치하는 방법은 여러가지다. 그 중 sdkman 을 이용해 설치하는 방법은 다음과 같다.

 

curl -s get.sdkman.io | bash

 

===============

CURL

curl 은 command line 용 data transfer tool 이다. download/upload 모두 가능하며 HTTP/HTTPS/FTP/LDAP/SCP/TELNET/SMTP/POP3 등 주요한 프로토콜을 지원하며 Linux/Unix 계열 및 Windows 등 주요한 OS 에서 구동되므로

여러 플랫폼과 OS에서 유용하게 사용할 수 있다. 또 libcurl 이라는 C 기반의 library 가 제공되므로 C/C++ 프로그램 개발시 위의 protocol 과 연계가 필요하다면 libcurl 을 사용하여 손쉽게 연계할 수 있다.

libcurl은 PHP, ruby, PERL 및 여러 언어에 바인딩되어 있으므로 사용하는 언어나 개발환경에 맞게 libcurl 을 사용할 수 있다.

 

https://www.lesstif.com/pages/viewpage.action?pageId=14745703

 

curl 설치 및 사용법 - HTTP GET/POST, REST API 연계등

curl 은 command line 용 data transfer tool 이다. download/upload 모두 가능하며 HTTP/HTTPS/FTP/LDAP/SCP/TELNET/SMTP/POP3 등 주요한 프로토콜을 지원하며 Linux/Unix 계열 및 Windows 등 주요한 OS 에서 구동되므로

www.lesstif.com

여기에 설명이 아주 잘 돼있다.

 

==============

 

source "$HOME/.sdkman/bin/sdkman-init.sh"

 

여기까지가 sdkman 을 설치하는 과정이고, 버전을 확인하고 싶으면 sdk version 을 입력 해본다.

 

sdk install springboot 

이렇게 하면 스프링 부트 CLI 설치가 진행된다.

 

spring --version 으로 spring CLI 버전을 확인해 보자.

 

 

홈브루 라는 유닉스라이크 운영체제 옵션이 있다. 본래는 macOS 사용자가 유닉스/리눅스 세상에서 빠진 도구를 설치하는 용도로 개발됐다.

홈브루로도 설치할 수 있으나, 일단 넘어가자. sdkman 으로 설치 했으니까.

 

 

스프링 부트 CLI 는 단순히 앱 실행뿐만 아니라 필요한 폴더 구조를 초기화하고 자동 생성하는 용도로도 쓰인다.

 

아주 최소한의 기본 프로젝트를 만드려면 다음과 같이 입력하면 된다.

 

spring init --build gradle myapp

 

--build gradle 옵션을 빼면 기본적으로 메이븐 프로젝트를 만든다.

 

spring init 명령어를 기억하자.

 

 

--여기까지 다시 복습 해보자.

SpringApplication은 스프링 앱을 간편히 초기화하는 특별한 클래스이다.

curl 은 command line용 data transfer tool 이다.

spring init 으로 스프링 부트 프로젝트의 뼈대를 생성할 수 있다.

---

 


컴파일, 테스트 ,빌드 작업에 쓰는 메이븐과 그레이들은 스프링 부트에서도 쓸 수 있다.

-메이븐과 그레이들은 컴파일, 테스트, 빌드 작업에 쓰인다.

 

메이븐을 기준으로, 스프링 부트 앱에 꼭 들어가는 폼 파일을 확인해 보자.

 

<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>wp-homepage</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>wp-homepage</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

 

위에서부터 내려가보자.

parent 안에 spring-boot-starter-parent 부분을 보자.

아티팩트를 선언했는데, 앱 실행에 필요한 라이브러리는 모두 여기에 담겨있다.

스프링 부트 시동에 꼭 필요한 스프링 프레임워크(spring-core) , 스프링 테스트 (spring-test) 는 모두 여기에 있다.

이 parent 상위 폼은 반드시 필요하다.

 

생략된 그 아래 부분인,

스타터 폼 섹션에는 실제로 갖다 쓸 스프링 부트 기능에 해당하는 의존체가 나온다.

 

스타터 폼은 앱에 필요한 의존체를 저눕 알아서 가져오므로 딱 하나만 넣는다. 가령 웹 애플리케이션 프로젝트면 spring-boot-starter-web 하나만 있으면 된다.

 

자 이제 spring-init 명령어는 잠시 잊고,

외부 도구에 눈을 돌려보자.

 

스프링 이니셜라이저라는 놈이 있는데, 피보탈 웹 서비스가 운영하는 사이트에 가면 자세한 정보를 얻을 수 있다.

 

원하는대로 골라 담아, 전체 폴더 구조가 고스란히 압축된 zip 파일을 다운받을 수 있게 해준다.

 

이 스피링 이니셜라이저를 curl 로 실행할 수도 있다.

 

세 번 째로는 스프링 도구모음(STS) 를 이용하는 방법이 있다.

STS는 Spring Tool Suite, 스프링 도구 모음의 약자다.

 

이클립스를 쓸 경우 해당 STS 플러그인을 설치하거나 해서 사용할 수 있다.

 

정리---

1.  spring CLI 를 설치한 후, spring-init 

2. 스프링 이니셜라이저를 사용하기

3. STS 플러그인을 설치하고 활용

 

등등 여러가지 방법으로 프로젝트를 생성할 수 있다.

 

intelliJ 같은 걸 설치하면 기본적으로 3번이 설치돼있는 경우가 많다.

 

3번을 이용해서 바로, 처음부터 프로젝트를 진행해보도록 하자.

 

 

 

블로그 이미지

맛간망고소바

,