입문 Spring

정예진·2026년 4월 7일

Spring

목록 보기
1/19

2026.04.07

1-1 OT - 스프링으로 백엔드 개발 시작하기

📚 오늘 배운 것

백엔드 개발이란?

실생활 비유로 설명하자면 백엔드레스토랑의 주방과 같음.

손님(USER)은 주방을 직접 보지 못하지만, 웨이터(FRONTEND)를 통해 주문을 하면 주방(BACKEND)에서 만든 요리를 전달 받을 수 있음.

스프링 부트(Spring Boot)란?

웹 서버를 쉽게 만들어주는 도구 상자임.

일반 Java 로 웹 서버를 만들려면 수 많은 설정과 코드가 필요함.

하지만, Spring Boot 를 사용하면 단 몇 줄로 웹 서버를 구동할 수 있음.

예시 코드임.

@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);  // 웹 서버 시작!
    }
}

Spring과 Spring Boot의 차이

Spring Framework는 기능이 많은 만큼, 개발자가 애플리케이션을 실핸하기 위해 필요한 환경 설정을 하나하나 직접 해줘야 하는 번거로움이 있음.

반면, Spring Boot 는 이러한 스프링의 복잡한 초기 설정을 자동으로 처리해주는 도구임.

💡 요즘 Spring 이라고 한다면 Spring Boot 를 뜻함.

포기하지 않기로 약속해요~!


1-2 스프링을 위한 클래스(Class)와 객체(Object)

📚 오늘 배운 것

클래스(Class)

클래스란 청사진, 설계도, 틀 이라고 말할 수 있음.

💡 클래스는 설계도 라고 이야기할 수 있지만, 설계도 는 실제 그 설계도로 만들어진 완성품이 아니기에, 이 설계도만으로는 무언가를 하기 어려움.

예를 들어서 빵틀이 있다고 해서 빵을 먹을 수 없음. 집 설계도가 있다고 해서 집을 소유하고 있는 것이 아님.

객체(Object)

// 클래스 정의 - 틀, 설계도
public class Bread {
    String name;  // 빵의 이름
    int calorie; // 빵의 칼로리
}

Bread 클래스를 만들어줌. (빵틀)

아직 여기에서는 Bread를 만들기 위한 방법을 정의하지 않았음.

생성자

// 클래스 정의 - 틀, 설계도
public class Bread {
    String name;  // 빵의 이름
    int calorie; // 빵의 칼로리
    
    // 생성자 정의 - 어떻게 결과물을 만들 것인가에 대한 방법을 '강제'
    public Bread(String name, int calorie) {
		    this.name = name;
		    this.calorie = calorie;
    }
}

이렇게 생성자까지 정의해줘야 빵을 만들 수 있음

생성자는 틀(=클래스)로 어떻게 결과물(=객체)을 만들 것인가에 대한 방법을 강제하는 것임.

Main 클래스에서 만들어보면

public class Main {

    public static void main(String[] args) {
        Bread newBread = new Bread("모닝빵", 200);
        System.out.println(newBread.name);
    }
}

new 키워드를 통해서 객체를 생성할 수 있음.

❗️ static 은 꼭 필요한 곳에 알고 쓰자!


1-3 스프링을 위한 인터페이스(Insterface)

📚 오늘 배운 것

인터페이스

인터페이스는 약속이나 규칙을 정의함.

인터페이스에서 중요한 점! 인터페이스가 규격(=명세)이라는 것임. (사용자 입장에서는 내부 구현을 아지 못해도 명세만 알고 있으면 클래스를 사용하는 것에 아무런 지장이 없다는 뜻임.)

마우스를 예시로 인터페이스를 만들어 보겠음

// 마우스 인터페이스 정의
public interface Mouse {

    void leftClick();    // 좌클릭
    void rightClick();   // 우클릭
    void scrollWheel();  // 스크롤휠
}

여기서 마우스는 좌클릭, 우클린, 스크롤휠 기능이 있음.

이걸 로지텍마우스 클래스에서 구현해보면, 이렇게 마우스로서 기본적으로 수행해야하는 기능들을 구현할 수 있음. ****

public class LogitechMouse implements Mouse {
    @Override
    public void leftClick() {
        // 로지텍 마우스 좌클릭 로직 구현
    }

    @Override
    public void rightClick() {
        // 로지텍 마우스 우클릭 로직 구현
    }

    @Override
    public void scrollWheel() {
        // 로지텍 마우스 스크롤휠 로직 구현
    }
}

삼성마우스 클래스도 만들어서 구현해보면

public class SamsungMouse implements Mouse {
    @Override
    public void leftClick() {
        // 삼성 마우스 좌클릭 로직 구현
    }

    @Override
    public void rightClick() {
        // 삼성 마우스 좌클릭 로직 구현
    }

    @Override
    public void scrollWheel() {
        // 삼성 마우스 좌클릭 로직 구현
    }
}

이렇게 각각 다른 마우스라고 하더라도 마우스로서 기본적으로 가지고 있어야하는 기능을 정의해놓는 것임. (implements로 불러올 수 있음)

Main에서 마우스들을 생성하면 이렇게 할 수 있음.

여기서 구현체의 실제 구현 내용보다는 인터페이스 그 자체의 명세가 더 중요함.

즉, MouseLogitechMouse 인지 SamsungMouse 인지는 사용하는 측에서는 크게 의미있는 내용이 아니라는 뜻임.

LogitechMouse 든, SamsungMouse 든 모두 똑같이 Mouse 타입으로 사용할 수 있음.

→ 이것을 다향성이라고 함.


1-5 꼭 알아야할 기본 개발 용어

📚 오늘 배운 것

프로그래밍 명명 규칙

일반적인 프로그래밍 명명 규칙 정리

  • kebab-case
    • 문자와 문자 사이를 - 대시로 이어줌.
    • 모든 단어는 소문자
  • PascalCase
    • 대부분 프로그래밍 언어에서 클래스 이름을 지정하는데 파스칼 케이스가 사용됨.
    • 문자의 처음 시작을 대문자로
    • 문자와 문자 사이를 대문자로 이어줌.
  • camelCase
    • Java, JavaScript, TypeScript에서는 변수, 함수, 메서드 이름을 만들 때 사용함.
    • 문자와 문자 사이를 대문자로 이어줌.
  • snake_case
    • Python이나 DB Table, Column에 사용됨.
    • 문자와 문자 사이를 _ 언더바로 이어줌.
    • 모든 단어는 소문자이거나 대문자임.

자바에서 사용하는 명명 규칙 정리

  • PascalCase
    • 클래스 이름을 지정할 땐 PascalCasse를 사용함.
  • camelCase
    • 변수, 함수, 메서드 이름을 지정할 땐 camelCase를 사용함.

클라이언트와 서버

클라이언트는 요청(Request) 하는 쪽이고 서버는 요청을 받아서 처리하고 응답(Response)을 주는 쪽임.

JSON과 XML

JSON

JSON은 클라이언트와 서버가 통신할 때 사용하는 데이터 양식

JSON은 KeyValue 로 이루어 져있음.

{
  "이름": "홍길동",
  "나이": 30,
  "사는곳": "서울",
  "개발자인가": true
}

Value는 또 다른 Key/Value가 될 수 있음.

{
  "이름": "홍길동",
  "나이": 30,
  "사는곳": {
	  "시": "서울시",
	  "구": "강남구",
	  "동": "대치동"
  }
  "개발자인가": true
}

XML

XML이란 헤더와 태그 등의 여러 요소로 가독성이 떨어지고, 불필요한 용량을 잡아먹는다는 단점때문에 잘 사용하지 않음.

<root>
  <이름>홍길동</이름>
  <나이>30</나이>
  <사는곳>
    <>서울시</>
    <>강남구</>
    <>대치동</>
  </사는곳>
  <개발자인가>true</개발자인가>
</root>

💡 JSON은 사람, 기계 모두 이해하기 쉬우며 용량이 작다!


0개의 댓글