스프링 프레임워크 첫걸음 2장

Peter·2023년 3월 23일
0

2장 기초 지식 배우기

2-1 자바 기초 지식 복습

2-2 웹 애플리케이션 만들기의 필수 지식 확인

2-3 개발에 사용하는 편리한 라이브러리와 도구

2-1-1 인터페이스란?

자바에서 클래스에 포함하는 메서드의 구체적인 내용을 작성하지 않고 상수와 메서드의 타입만 정의한 것.

인터페이스 선언

public interface Greet{
	/**
    * 인사하기
    */
    void greeting();
}

인터페이스는 다른 클래스에서 구현하는 것을 전제로 만들어짐. -> 인터페이스를 선언한 메서드는 암묵적으로 public abstract 접근 제어자(access modifier)가 붙은 추상 클래스라고 불린다.

public interface Greet{
	/**
    * 인사하기
    */
    public abstract void greeting();
}

위 코드와 위위 코드는 같음.

또한 인터페이스에 변수를 선언한 경우는 암묵적으로 public static final 한정자가 붙어 상수가 된다.

인터페이스 구현하기

인터페이스를 구현할 때는 implements 키워드를 사용한다. 또한 인터페이스로 정의되는 추상 메서드를 모두 구현해야한다. 만약 모두 구현하지 않으면 컴파일 에러가 발생한다. 인터페이스의 추상 메서드는 암묵적으로 public abstract 한정자가 붙기 때문에 구현할 때는 public을 선언해 둘 필요가 있다.

public class MorningGreet implements Greet{
	@Override
    public void greeting(){
    	System.out.println("굿 모닝");
    }
}

@Override 어노테이션은 슈퍼 클래스나 인터페이스의 메서드를 상속 혹은 구현하는 클래스에서 재정의하는 것을 말한다.

2-1-2 리스트란?

컬렉션의 종류 중 하나

종류(인터페이스)개요
리스트(List)순서대로 데이터를 저장. 데이터의 중복을 허용
세트(Set)순서를 유지하지 않는 집합. 중복을 허용하지 않음
맵(Map)키와 값의 쌍으로 이루어진 데이터 집합. 순서는 유지되지 않고 키의 중복을 허용하지 않으며 값의 중복을 허용

리스트의 개요

List: 컬렉션 프레임워크에서 제공하는 인터페이스. 여러 데이터를 순서대로 정렬하여 저장할 때 사용한다. 실제로 사용할 때는 List 인터페이스를 구현한 클래스를 사용한다.

구현개요
ArrayListList 인터페이스의 구현 클래스에서 가장 많이 사용된다. 요소를 배열로 유지하기 때문에 요소의 검색을 고속으로 처리할 수 있지만, 요소의 수가 많아지면 추가/삭제를 처리하는 데 시간이 걸린다.
LinkedList요소끼리 전후 양방향의 링크로 참조하는 리스트 구조를 이용해 관리하기 때문에 요소의 추가나 삭제가 ArrayList 보다 빠르다. 그러나 특정 요소 검색과 같은 인덱스 값에 의한 무작위 액세스에는 적합하지 않다.

2-1-3 리스트 프로그램 만들기

package chapter02;

import java.util.ArrayList;
import java.util.List;

public class ListExercise {
    public static void main(String[] args){
        // String 타입을 저장할 List를 준비
        List<String> names = new ArrayList<>();

        // String 타입의 데이터 넣기
        names.add("홍길동");
        names.add("김선비");
        names.add("James");

        // for문으로 데이터를 하나씩 출력
        for(String name : names){
            System.out.println(name);
        }
    }
}

2-2-1 클라이언트와 서버

클라이언트: 서비스를 요청하는 쪽
서버: 서비스를 제공하는 쪽

2-2-2 브라우저

브라우저: 인터넷을 사용할 때 이용하는 소프트웨어
대표적인 브라우저는 다음과 같다.

  • 구글 크롬
  • 파이어 폭스
  • 마이크로소프트 엣지
  • 인터넷 익스플로러
  • 사파리

2-2-3 애플리케이션과 웹 애플리케이션

애플리케이션(응용 프로그램): 응용 프로그램 소프트웨어의 약어. 즉, 프로그래밍 언어로 작성한 소프트웨어
웹 애플리케이션(웹 응용 프로그램): 인터넷을 통해 사용되는 응용 프로그램. 검색 엔진, e-커머스, e-러닝 등 많은 응용 프로그램이 웹 응용 프로그램으로 세상에 제공된다.

2-2-4 웹 서버

웹 서버: 웹 애플리케이션을 배포하는 서버. 항상 실행되며 클라이언트로부터 액세스(요청)를 계속 기다린다.

2-2-5 HTTP 통신(프로토콜)

클라이언트와 서버는 HTTP 요청(request)과 HTTP 응답(response)으로 상호작용한다. 이를 HTTP 통신이라고 한다. 클라이언트의 요청에 대해 웹 서버가 응답한다.

HTTP 통신의 흐름
1. 클라이언트가 브라우저에 URL을 입력한다.
2. 클라이언트에서 웹 서버로 HTTP 요청이 전송된다.
3. 웹 서버는 HTTP 요청을 받아 HTTP 요청에 해당하는 HTTP 응답을 클라이언트에게 반환한다.
4. 브라우저는 받은 응답을 표시하고 클라이언트가 이를 확인한다.

2-2-6 GET 메서드와 POST 메서드

GET 메서드: 브라우저에서 웹 서버로 값을 전달할 때 URL 뒤에 값을 더하여 보내는 방식이다. URL 뒤에 오는 정보를 '쿼리 스트링(query string)' 또는 '쿼리 문자열'이라고 한다.
쿼리 스트링의 특징 3가지
1. URL 끝에 "?"가 붙어 쿼리 스트링의 시작을 나타낸다.
2. 형식은 '이름=값'이다. (ex: domain.com/?name=value)
3. 여러 값을 전달하려면 '&'로 연결한다. (ex: domain.com/?name=value&tel=010)

쿼리 스트링은 많은 양의 값을 보내기에 적합하지 않다.

POST 메서드: 브라우저로부터 웹 서버에 값을 보낼 때 '요청 본문(request body)'라고 하는 URL에는 보이지 않는 장소에 값을 넣어서 보내는 방법. e-커머스 사이트 등에서 개인정보를 등록할 때, 입력한 내용을 URL에 표시하고 싶지 않을 경우에 POST 메서드가 사용된다.
POST 메서드는 많은 양의 값을 보내는 데 적합하다.

GET 메서드와 POST 메서드의 차이는 브라우저의 즐겨찾기에 등록할 수 있는가?를 생각하면 쉽다.

2-3-1 Lombok이란?

라이브러리: 편리한 프로그램을 모아 모듈화한 것
Lombok은 이런 라이브러리의 하나이다.
Lombok을 사용하면 getter나 setter 등의 코드를 작성하지 않아도 자동으로 구현해준다.

2-3-2 Gradle이란?

Gradle(그레이들): 빌드 도구
빌드: 요구된 실행 환경에서 동작할 수 있는 형식에 애플리케이션이나 라이브러리를 조립하는 것

빌드 도구는 다음의 반복적인 작업을 자동화한다.

  • 필요한 라이브러리를 리포지토리(라이브러리가 저장되어 있는 곳)에서 다운로드한다.

  • 소스코드를 컴파일한다.

  • 테스트를 실행하여 보고서를 출력한다.

  • 클래스 파일의 아카이브(여러 파일이나 폴더를 하나로 정리하는 것)를 생성한다.

  • 아카이브를 스테이징 환경(프로덕션 환경에 가까운 환경) 등에 배포한다.

여기서 Gradle은 빌드 파일에 설정을 작성하는 것으로 여러 가지 작업을 자동으로 해주는 도구라고 생각하면 된다.

profile
개발자 지망생. 일단 하고보자

0개의 댓글