🍏 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번 포트를 사용하기 위한 입력
라이브러리와 프레임 워크
- 라이브러리: 애플리케이션 개발에 필요한 기능인 클래스, 함수 등의 모음
- 복잡한 코드를 직접 작성하지 않아도 되어 원하는 기능을 더 빨리 개발할 수 있음.
- 프레임워크: 소프트웨어 개발을 수월하게 하기 위한 개발환경
백엔드 개발자의 업무
- 과제 할당 → 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 백엔드 개발자 되기> 책을 참고하였습니다.)