🍏 Spring Boot

[Spring Boot] 시작하기 / 기본 개념 정리

cosmo225 2025. 3. 9. 13:37

🍏 기본 개념 정리

서버와 클라이언트란?

  • 클라이언트: 서버로 요청하는 모든 프로그램. 대표적인 예: 웹 브라우저
  • 서버: 클라이언트의 요청을 받아 처리하는 주체

데이터베이스에 대하여

  • 데이터베이스: 여러 사람이 데이터를 한 곳에 모아 관리하는 데이터 저장소
  • RDB: Relational Database, 관계형 데이터베이스. 데이터를 행과 열로 이루어진 테이블로 관리.
    • oracle, mysql, sql 서버 등
  • SQL: Structured Query Language, 데이터 검색 언어.
  • NoSQL: Not only SQL, 비정형 데이터를 다루는 방식

아이피와 포트

  • 아이피: 인터넷에서 서로를 식별하고 통신하기 위한 주소
  • 포트: 서버에서 운용되고 있는 서비스를 구분하기 위한 번호
    • https:// → 서버의 443번 포트를 사용하기 위한 입력

라이브러리와 프레임 워크

  • 라이브러리: 애플리케이션 개발에 필요한 기능인 클래스, 함수 등의 모음
    • 복잡한 코드를 직접 작성하지 않아도 되어 원하는 기능을 더 빨리 개발할 수 있음.
  • 프레임워크: 소프트웨어 개발을 수월하게 하기 위한 개발환경

백엔드 개발자의 업무

  1. 과제 할당 → 2. 과제 분석 → 3. 개발 → 4. 테스트 → 5. QA → 6.배포 → 7. 유지보수

 

🍏 스프링 부트

개발자가 비즈니스 로직 개발에 더욱 집중할 수 있게 해 주는 프레임워크

 

스프링 부트의 주요 특징

  • 서버가 내장되어 있어 따로 설치하지 않아도 됨
  • 스프링 부트 스타터를 제공함
  • XML 설정을 하지 않고 자바 코드로 모두 작성 가능
  • JAR을 이용해 자바 옵션만으로 배포 가능

 

제어의 역전과 의존성 주입

IoC란?

  • Inversion of Control, 제어의 역전
  • 다른 객체를 직접 생성하거나 제어하는 것이 아닌, 외부에서 관리하는 객체를 가져와 사용!
public class A {
 private B b; // 코드에서 객체를 생성하지 않음, 받아온 객체를 b에 할당.
 }

 

DI란?

  • Dependency Injection, 의존성 주입
  • 애너테이션을 이용해 객체를 주입받음. ex) @Autowired
public classs A {
@Autowired // A에서 B를 주입받음
B b;
}

 

빈과 스프링 컨테이너

  • 스프링 컨테이너: 빈을 생성하고 관리
  • 빈: 스프링 컨테이너가 생성하고 관리하는 객체
  • ex) 클래스에 @Component 애너테이션을 붙이면 빈으로 등록됨.

관점 지향 프로그래밍, AOP

  • 핵심 관점, 부가 관점으로 나누어 관심 기준으로 모듈화하는 것을 의미함.
  • 관점을 분리해 프로그램의 변경과 확장에 유연하게 대응할 수 있음.

이식 가능한 서비스 추상화, PSA

  • Portable Service Abstraction, 다양한 기술을 추상화해 개발자가 쉽게 사용하는 인터페이스
  • 클라이언트의 매핑과 클래스, 메서드의 매핑을 위한 애너테이션

 

🍏 스프링 부트 3 코드 이해하기

@SpringBootApplication 이해하기

  • 자바의 main() 메서드와 같은 역할을 함. 이 애너테이션을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해 줌.
  • SpringApplication.run() 메서드는 애플리케이션을 실행함.
    • 첫 번째 인수는 메인 클래스, 두 번째 인수는 커맨드 라인의 인수들을 전달.
    • https://lordofkangs.tistory.com/12 (커맨드 라인 인수 정의가 헷갈릴 때)
  • @SpringBootConfiguration: 스프링부트 관련 설정을 나타냄.
  • @ComponentScan: 사용자가 등록한 빈을 읽고 등록함.
    • @Component라는 애너테이션을 가진 클래스를 찾아 빈으로 등록함
  • @EnableAutoConfiguration: 자동 구성 활성화 애너테이션.

TestController.java

  • @RestController: 라우터(= HTTP 요청과 메서드를 연결) 역할.
  • TestController을 라우터로 지정해 /test 라는 GET 요청이 올 때 test() 메서드 실행하도록 구성.
  • @RestController → @Controller, @ResponseBody → @Component을 가지고 있음
    • @Component 애너테이션을 가지고 있기 때문에 빈으로 등록됨.

 

  • 자바의 main() 메서드와 같은 역할을 함.
    이 애너테이션을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해 줌.
  • SpringApplication.run() 메서드는 애플리케이션을 실행함.
    • 첫 번째 인수는 메인 클래스, 두 번째 인수는 커맨드 라인의 인수들을 전달.

  • @SpringBootConfiguration: 스프링부트 관련 설정을 나타냄.
  • @ComponentScan: 사용자가 등록한 빈을 읽고 등록함.
    • @Component라는 애너테이션을 가진 클래스를 찾아 빈으로 등록함
  • @EnableAutoConfiguration: 자동 구성 활성화 애너테이션.

 

🍏 스프링 부트 구조

➡️웹 브라우저의 요청 → TestController 처리 → TestService 에 다음 요청

양 옆 계층과 통신하는 구조

 

  • 프레젠테이션 계층: HTTP 요청을 받고 비즈니스 계층으로 전송. (컨트롤러)
  • 비즈니스 계층: 모든 비즈니스 로직을 처리. (서비스)
  • 퍼시스턴스 계층: 모든 데이터베이스 관련 로직을 처리. (리포지터리)

 

 

(본 게시물은 <스프링부트3 백엔드 개발자 되기> 책을 참고하였습니다.)