Spring 입문 1-1 (Gradle ~ properties)

SJ.CHO·2024년 9월 24일

Gradle 이란?

  • 소프트웨어 빌드 자동화 및 프로젝트 관리를 위한 오픈 소스 빌드 도구

    • 작성한 Java 소스코드를 자동으로 Build

    • Gradle을 사용시 간편하게 .java 파일을 .jar파일로 변경.

  • build.gradle

    • build.gradle은 Gradle 기반의 빌드 스크립트
    • groovy 혹은 kotlin 언어로 스크립트를 작성할 수 있다.
  • 필요로하는 외부 라이브러리를 dependencies 작성시 그레이들이 해당 라이브러리를 https://mvnrepository.com 라는 곳에서 자동으로 다운로드해온다.

  • 라이브러리의 의존성을 자동으로 관리해주기에 라이브러리들의 충돌을 걱정할 필요가 없어짐.

  • Spring Boot 의 버전 또한 변경이 가능.

NetWork 란?

  • 네트워크 : 여러대의 컴퓨터 또는 장비가 서로 연결되어 정보를 주고받는 시스템.

    • 라우터, 스위치, 허브 등 각각의 장치를 이용해 IP주소, 서브넷마스크, 게이트웨이 등 정보를 설정하고 프로토콜을 이용하여 통신.
  • 웹 서버

    • 인터넷을 통해 HTTP를 이용하여 웹상의 클라이언트의 요청을 응답해주는 시스템.
    • 기본적으로 브라우저가 웹서버에 요청을 할때는 항상 GET method로 요청
  • API(application programming interface)

    • 다른 SW와 통신하기위해 따라야하는 규칙을 정의
    • 인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면을 의미
    • 네트워크의 프로토콜과 비슷한 개념
  • RESTful API

    • API 작동방식에 조건을 부과하는 SW 아키텍쳐
    • 특정 자원을 URI 로 관리하면서 HTTP 메서드를 활용하면 RESTful 하게 설계했다고 봄.
  • API Table : 협업하는 개발자들과 소통하기위한 테이블 문서 주로 클라이언트 개발자와 소통용

  • WEB Server VS Web Application Server(WAS)

    • 가장 큰 차이점은 정적 , 동적 컨텐츠 지원여부
    • HTML 같은 정적 요청이 들어왔을때는 웹서버가 처리할 수 있지만 동적인 요청이 발생시 WAS 를 호출하여 처리

Spring VS Spring Boot

  • Spring

    • Java에서 주로 사용하는 FrameWork
    • AOP, IoC/DI, PSA 등 객체지향의 핵심기능을 제공
    • 하지만 XML 등 번거롭고 난이도높은 초기설정이 필요.

  • Spring Boot

    • 기존의 Spring의 XML 설정을 배제하고 애너테이션(@) 설정을 적극적활용

    • 기본적으로 자주 사용되는 설정값들을 기본값으로 설정하여 세팅에 편리.

    • 외부 라이브러리, 하위 프레임워크에 대한 의존성관리 편의성증가.

    • Apache Tomcat의 내장으로 개발자가 따로 프로젝트를 설정하지 않아도 사용이가능!

HTTP

  • HTTP(HyperText Transfer Protocol)

    • 데이터를 주고 박는 양식을 정의한 통신규약
    • 모든 브라우저는 HTTP를 기본적으로 지원
    • Request, Response 개념 기반으로 데이터를 HTTP 메소드로 송,수신.
  • Header (메타데이터)

    • 브라우저가 찾는 정보 등 의사표현 에 관한 데이터를 모두 넣어 주고받는 공간.
  • Payload(HTTP(BODY))/(일반데이터)

    • 서버가 응답을보낼때 데이터를 집어넣는 공간.
    • GET 메소드는 Body가 존재하지 않아서 에러가발생함!

테스트 코드

  1. 블랙박스 테스팅
  • SW 내부구조나 동작원리를 모르는 상태 에서, 사용자의 입장에서 동작검사.
  • 누구나 테스트 가능
  • 기능, 시간이 지날수록 범위가 증대함. 테스터에 따른 결과편차가 심함.
  1. 개발자 테스트
  • 본인이 직접 작성한 코드를 검증 하기위한 테스트 코드 작성

  • 빠르고 정확한 테스트 가능하고 자동화가 가능

  • 개발시간이 높고 테스트 코드도 의존이생김.

    JUnit

  • Spring에서 제공하는 Java 용 단위테스트 프레임워크

  • JUnit은 테스트 실행 환경을 가지고 있기 때문에 따로 main() 메서드를 실행하거나 서버를 실행시키지 않아도 이렇게 각각의 메서드 혹은 기능별로 테스트 코드를 작성하여 실행

Assertions.assertEquals(10, result); : 개발자가 예상하는 테스트 결과

LomBok

  • Java 프로젝트를 진행하여 생성자/메서드(Getter/Setter 등...) 를 만들어주는 외부 라이브러리
package com.sparta.springprepare;

import lombok.*;

public class Memo {
    private String username;
    private final String contents;
}

application.properties

  • Spring과 관련된 설정을 할 때 사용되는 파일
  • DB 연결 시 DB의 정보를 제공해야하는데 이러한 경우에도 이 파일을 이용하여 쉽게 값을 전달가능
  • 서버포트 등 도 변경이 가능함.
profile
70살까지 개발하고싶은 개발자

0개의 댓글