본문 바로가기
3.1 SpringBoot/묘공단 SpirngBoot3

[묘공단/spring] 0-1장 개발환경 및 기본정리

by Dohi._. 2023. 9. 18.
728x90

포스팅 목차  (책의 목차와 다릅니다 개인적으로 공부한 내용입니다)

0장

  0-1. 인텔리제이 (Intellij) 

  0-2. Build System (Maven , Gradle)

  0-3. 포스트맨 postman 

1장

  1-1. 서버의 용어정리 (client , sever , DataBase, DBMS , IP, Port)

  1-2. 애너테이션 (annotation) 

 

이번 Spring 공부는 인텔리제이(Intellij)를 이용합니다.
자세한 개발환경 구축은 0. Spring start ( Intellij 설치, spring.io) 편에 정리해 놨습니다

0-1. Intellij 설치 (IDE설치)

Java를 개발할 때 주로 사용하는 IDE(통합개발환경 / Integrated Development Environment)는 

eclispe와 Intellij를 주로 많이 씁니다 

이번 Spring공부할 때는 Intellij를 사용할 예정입니다

설치 주소 : https://www.jetbrains.com/ko-kr/idea/download/#section=windows

무료버전(Community Edition)을 사용해도 무방하기 때문에 무료버전을 설치해도 됩니다 

만약 대학생이시라면 교육 관련으로 대학생인증하면 1년마다 무료로 ultimate를 제공합니다

교육인증을 해서 사용하는 것을 추천합니다

 

설치도중 체크박스 부분 해석입니다.

참고하고 체크하시면 도움이 될 것 같습니다.

이미 설치를 해서 사진은 무료버전으로 다시 설치해서 사진을 따왔습니다.

 

① Create Desktop Shortcut : 바로가기 생성 여부

 Update context menu : 프로젝트로 폴더 열기

 Create Association : 자바 사용 (본인이 사용할 환경 선택)

 Update PATH variable(restart needed) : 윈도우 환경변수에 자동으로 추가할 수 있도록 체크

 

그 후 next를 누르시면 마무리하면 설치까지 완료됩니다.

 

0-2. Build System - (Maven , Gradle)

스프링 부트 프로젝트를 만드실 때 많은 분들이 스프링부트 스타터를 많이 사용합니다.

 

Project에 Gradle(그레이들)과 Maven(메이븐)으로

나눠져있을겁니다.

 

우선 빌드 시스템에 있는  GradleMaven은 소스 코드를 이용해서 의존성 관리, 컴파일 테스트 코드.. 등등등 많은 일처리를 자동화하여 실행 가능한 애플리케이션을 만드는  프로그램입니다.

 

GradleMaven의 둘의 차이는

예전에 많이 사용한 Maven의 경우 XML로 라이브러리를 정의

비교적 최근에 나온 Gradle의 경우 별도의 빌드 스크립트 언어로 구성

즉, Gradle은 Maven의 XML에 비해 가독성이 좋고 설정이 간단합니다.

 

차이점 비교를 위한 코드예시
Spring Version : 2.5.0
Java    Version :17

pom.xml(Maven)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>com.example</groupId>
    <artifactId>spring-boot-java17</artifactId>
    <version>1.0.0</version>
    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
    </parent>

    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

build.gradle (Gradle)

plugins {
    id 'org.springframework.boot' version '2.5.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '1.0.0'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

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

test {
    useJUnitPlatform()
}

설정이 간단하고 가독성이 좋으며 빌드와 테스트 속도가 Maven에 비해 Gradle이 더 빠르고 우세하다!

요즘에는 그래서 Gradle을 사용하지만 
이미 적응된 방식을 바꾸려고 팀전체가 다시 학습을 진행하기도 그렇고
이미 Maven의 자료가 많아서 Gradle과 Maven이 서로 양립하고 있다만 알면 좋을 것 같습니다 

 

 

0-3. 포스트맨 postman

지금까지 많은 프로젝트를 하면서 프론트엔드가 개발이 완료되기 전에 저는 저만의 테스트 html를 만들면서 직접 테스트를 진행했었는데 postman은 HTTP요청을 보낼 수 있는 프로그램입니다 

설치주소 : https://www.postman.com/downloads/

설치를 하고 자신에게 맞는 OS를 선택하여 설치해 줍니다

설치 후 로그인을 해야 프로그램을 접속이 가능해서 로그인 후 세팅을 하도록 하겠습니다

간단하게 HTTP메서드만 사용할 예정이기 때문에

프로그램을 들어오고 

1.workspaces -> my workspace

2.My Workspace 옆에 있는 New 클릭

3. HTTP 선택 

위의 순서대로 접속을 하시면 HTTP메서드를 할 수 있는 요청창이 새로 생깁니다
추후에 자세한 사용법은 저도 배워가면서 포스팅에 추가하도록 하겠습니다.

 

1-1. 서버의 용어정리 (client , sever , DataBase, DBMS , IP, Port)

보통 서비스를 운영할 때 클라이언트와 서버는 서로 관계를 맺습니다 

클라이언트는 서버에게 요청(데이터 내놔!, 저장, 수정해 줘!, 주소에 띄울 화면 내놔!) 하고

서버에서는 응답(DB에서 꺼내줄게! 수정해 줄게! 데이터 JSON! HTML! CSS 받아)을 해줍니다. 

 

또한 서비스에서는 여러 사람들이 만든 데이터를 모아서 관리하는 데이터 저장소를  DataBase라고 합니다

데이터베이스DBMS(DataBase Management System)이라는 데이터베이스 관리 시스템으로 운영되고 관리됩니다

흔히 MySQL, Oracle(오라클), DynamoDB(다이나모디비)등이 있습니다

 

  • 데이터베이스 : 데이터의 저장소. 
  • DBMS :데이터베이스를 관리하는 시스템.
    •  관계형 DBMS(RDB) , NoSQL 등등의 종류가 있습니다 
  • SQL(Structured Query Language) 데이터 검색을 하는 언어이며 각자의 RDB마다 방언이 있지만 표준의 SQL만 공부하거나 java에서 방언을 처리해 주는 방식으로 방지합니다. 또한 NoSQL은 SQL을 안 쓰는 방향으로 도입되었지만 최근에는 SQL의 엔진을 도입하기도 하여서 RDB의 만의 언어라고도 하는 것은 애매합니다

이제 만든 서비스를 찾아가야 하는데 사용자가 찾아오려면 IP와 Port로 이루어진 주소가 필요합니다

IPPort는 간단하게 말하면 IP는 서로 통신하기 위한 주소입니다 그리고 Port는 동 호수라고 생각하면 편합니다.

문제는 여기서 IP의 주소는 너무 광범위하기 때문에 저희가 제공하는 디테일한 주소로 와야 합니다.

그때 필요한 것이 Port입니다.

예를 들어 회사의 고객센터를 가려고 하는데

회사의 도로명주소만 안다고 찾아가도 숨겨놓은 고객센터 위치를 모르기 때문에 고객센터의 층과 호수를 알아야 

바로 고객센터를 찾아갈 수 있을 것입니다.

Java Spring의 기본 Port는 8080이고 언제나 옮길 수 있습니다.

 

1-2. 애너테이션(annotation)

애너테이션은 @기호를 사용하며 다양한 목적으로 사용하는 코드에 추가하는 표식을 말합니다

흔히 자바 코드에서 볼 수 있는 애너테이션 
@Override : 선언된 메서드가 *오버라이드 되었다     *오버라이드: 덮어 씌우는 것이라고 생각하면 편합니다.

 

많은 애너테에션이 있으므로 추가적인 애너테이션은 따로 정리하고 있습니다 

[부록-1] 애너테이션(@)정리

 

 


이 글은 골든래빗 《스프링 부트 3 백엔드 개발자 되기 - 자바 편》의 0-1장 써머리입니다.

728x90

댓글