[Spring] 스프링을 위한 기본 개념 복습 및 학습

2025. 10. 14. 21:12·Spring/백엔드 기초

아직 모자란 부분이 많지만, Spring 을 시작하기 전에 앞서 그동안 학습했고 정리했던 개념들을 다시 한번 돌이켜보고

이를 기반으로 Spring을 진행할 때의 이해도를 갖춰 나아가고자 한다.

 

💡 생성자

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

 

위와 같은 생성자의 파라미터인 String name, int calorie 로만 빵을 만들 수 있다는 정의를 내림

 

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

 

생성자를 이용해 객체를 만들게 되면 

public class Main {

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

👉 객체를 만들 때에는 new 키워드를 사용해 만들어야 함을 잊지 말 것

 

⭐️ static은 꼭 필요한 곳에 알고 사용하는 것이 중요!

 

💡 프로그래밍 명명 규칙

가장 기본이지만 놓치기 쉬운, 그리고 손에 익게끔 연습해야 하는 프로그래밍 명명 규칙이 있다.

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

 

💡 JSON과 XML

  • JSON : 클라이언트와 서버가 통신할 때 사용하는 데이터 양식
    클라이언트와 서버가 사용하는 언어에 관계 없이 통일된 데이터를 주고받을 수 있도록 만들어 줌

  • JSON은 Key 와 Value로 이루어진 데이터를 정리하는 방식
{
  "이름": "홍길동",
  "나이": 30,
  "사는곳": "서울",
  "개발자인가": true
}

// Key는 이름, 나이 사는곳, 개발자인가
// Valuesms 홍길동, 30, 서울, true

 

  • Value는 또 다른 Key/Value가 될 수 있음!
{
  "이름": "홍길동",
  "나이": 30,
  "사는곳": {
	  "시": "서울시",
	  "구": "강남구",
	  "동": "대치동"
  }
  "개발자인가": true
}

 

  • XML : 웹 초기시절부터 사용된 여러 요소로 단점을 보완해 나온 것이 JSON

 

💡 라이브러리(Library)

  • 라이브러리 : 애플리케이션 개발에 필요한 클래스, 함수 등을 모아 놓은 코드의 모음을 의미
    • 👍 장점
      • 개발자가 복잡한 코드를 직접 작성하지 않아서 개발 생산성이 높아짐
      • 검증된 라이브러리는 테스트와 커뮤니티 지원을 통해 안정성과 품질이 보장됨
    • 👎 단점
      • 라이브러리가 업데이트 되지 않거나 지원이 중단될 경우 문제가 발생할 수 있음
      • 버전 호환성 문제로 인해 다른 라이브러리나 기존 코드와 충돌이 발생할 수 있음
        • 생각보다 빈번하게 발생
      • 불필요한 기능을 포함한 라이브러리를 사용하면 비효율적
      • 라이브러리 내부 구현을 직접 수정하기 어려워, 특정 요구 사항에 맞게 조정하기 힘들 수 있음

 

💡 프레임워크(Framework)

  • 프레임워크 : 소프트웨어 개발을 간편하게 만들기 위한 소프트웨어 개발 환경
    프레임워크는 frame(틀) work(일하다)의 합성어로 일하기 위한 틀을 의미, 개발자는 해당 틀 안에서 개발해야 함
    • 👍 장점
      • 개발 프로젝트에 일관된 구조를 제공하여 코드의 일관성과 가독성을 높여주며 팀 협업이 편해짐
      • 기본적으로 필요한 기능과 도구를 제공하여 개발자들이 핵심 비즈니스 로직에 집중할 수 있음
      • 보안 관련 기능을 기본적으로 제공하여, 보안 취약점을 방지하는데 도움을 줌
      • 통합된 테스트 환경과 도구를 제공하여 테스트를 쉽게 작성하고 실행할 수 있음
      • 인기 있는 프레임워크는 방대한 커뮤니티 지원을 받으며 다양한 문서를 활용할 수 있음
    • 👎 단점
      • 프레임워크는 굉장히 복잡한 구조를 가지기 때문에, 처음 익히는 데 시간이 많이 소요됨
      • 프레임워크의 새로운 버전이 기존 코드와 호환되지 않을 수 있음
      • 정해진 규칙과 구조를 따르게 강제하여 자유롭게 변경하기 어려울 수 있음

👉 Spring 프레임워크는 Java 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크를 말함.

  • Spring은 복잡한 엔터프라이즈급 애플리케이션 개발을 보다 쉽고 효율적으로 할 수 있도록 강력하고 포괄적인 기능을 제공
  • 개발자는 Spring을 사용하여 비즈니스 로직에 더 집중할 수 있고, 인프라나 기술적인 복잡성은 Spring이 대신 처리하도록 할 수 있음

 

💡 API 개념

  • API(Application Programming Interface) : 프로그램끼리 대화하는 방법을 의미이며 인터페이스임을 잊지 말 것!
    • 인터페이스를 사용하게 되면 사용자는 내부 구현을 몰라도 사용하는데에 전혀 지장이 없음. 제공되는 데이터만 올바르게 잘 활용하기만 하면 되는 것

 

💡 RESTful API

  • REST는 어떻게 서버 구현을 알지 못하는 클라이언트가 API를 잘 이용할 수 있을지에 대한 고민의 결과
    • 반드시 지켜야 하는 규칙은 아니지만 권장사항의 개념

 

🖇️ RESTful API의 디자인 원칙

  1. 동사보단 명사를, 단수보단 복수를
    ❌ /memberget/item/hello
    ✅ /members/items
  2. 마지막에 / 넣지 않기
    ❌ /members/
    ✅ /members
  3. _ 대신 - 사용 + 대문자 사용하지 않기
    ❌ /restful_services
    ✅ /resful-services
  4. 확장자 포함하지 않기(svg, png, exe 등)
    ❌ /image.svg
    ✅ /images
  5. 계층화 하기
    ❌ /items/{memberId}/members/{itemId} (x)
    ✅ /members/{memberId}/items/{itemId}

 

💡 Annotation과 Lombok

  • Annotation : 어노테이션은 자바 코드에 메타 데이터를 추가하여 코드에 특별한 의미를 부여하거나, 컴파일러와 런타임에 특정 동작을 트리거하기 위해 사용됨
  • Lombok 라이브러리 : 보일러 플레이트 코드를 줄여주는 라이브러리로 자동으로 보일러 플레이트 코드를 생성하여 코드의 가독성과 유지보수성을 높여줌 
    Lombok은 어노테이션 기반으로 동작하며, 주로 컴파일 시점에 소스 코드를 변환하여 필요한 메서드를 자동으로 생성

    ❓보일러 플레이트 코드(Boileplate code) : getter/setter 메서드, 생성자, toString 메서드 등과 같이 반복적으로 작성되는 코드를 말함 

 

🖇️ 주요 Lombok Annotation

  • @Getter, @Setter
    • 클래스의 모든 필드에 대한 getter와 setter 메서드를 자동으로 생성
@Getter
@Setter
public class User {
    private String name;
    private int age;
  
  /** 아래 코드를 @Getter, @Setter 어노테이션이 생성해준다.
    public String getName() {
	    return name;
    }

    public void setName(String name) {
	    this.name = name;
    }
    
    public int getAge() {
	    return age;
    }

    public void setAge(int age) {
	    this.age = age;
    }
    **/
}

// 위의 코드에서 주석 부분의 메서드가 자동으로 생성됨

 

  • @ToString
    • 객체의 toString() 메서드를 자동으로 생성
    • 기본적으로 클래스의 모든 필드를 포함하며, 특정 필드를 제외하거나 포맷을 지정할 수도 있음
@ToString
public class User {
    private String name;
    private int age;
}

 

  • @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor
    • 기본 생성자를 생성한다
    • 모든 필드를 매개변수로 하는 생성자를 생성
    • 필수(final) 필드만을 매개변수로 하는 생성자를 자동으로 생성
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private int age;
}

 

  • @Slf4j
    • 클래스에 로그를 남기기 위한 Logger 객체를 자동으로 생성
@Slf4j
public class UserService {
    public void logMessage() {
        log.info("This is a log message");
    }
}

 

'Spring > 백엔드 기초' 카테고리의 다른 글

[백엔드 기초] Filter, Spring Security  (0) 2025.10.24
[백엔드 기초] 쿠키를 활용한 인증 인가 개념 실습  (0) 2025.10.23
[백엔드 기초] 백엔드 기초 개념정리  (0) 2025.10.22
[백엔드 기초] 기초 개념 정리하기  (0) 2025.10.21
[Spring] 스프링을 위한 기본 개념 복습 및 학습 -2  (0) 2025.10.15
'Spring/백엔드 기초' 카테고리의 다른 글
  • [백엔드 기초] 쿠키를 활용한 인증 인가 개념 실습
  • [백엔드 기초] 백엔드 기초 개념정리
  • [백엔드 기초] 기초 개념 정리하기
  • [Spring] 스프링을 위한 기본 개념 복습 및 학습 -2
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    String.format
    Til
    git
    Stomp
    Spriingboot
    프로세스와 쓰레드
    백엔드 기초
    객체지향
    WebSocket
    Github
    백엔드 기초다지기
    jsp
    for문
    RestTemplate
    다형성
    경합조건과 교착상태
    BEAN
    SpringSecurity
    JPA
    실시간 데이터 처리
    java
    algorithm
    웹소켓
    네트워크 기초
    객체지향프로그래밍
    thymleaf
    Java 문법기초
    HTML&CSS
    Spring
    MVC
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
[Spring] 스프링을 위한 기본 개념 복습 및 학습
상단으로

티스토리툴바