728x90
01_스프링 부트란?
1.1 스프링 프레임워크
- 자바에서 가장 많이 사용하는 프레임워크
- 우리나라 ‘전자정부 표준 프레임워크’
- ‘오픈소스 경량급 애플리케이션 프레임워크’
- 자바로 애플리케이션을 개발하는 데 필요한 기능을 제공하고 쉽게 사용하도록 돕는 도구
1.1.1 제어 역전(IoC)
- 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부에 위임
- 외부: 스프링 컨테이너 or IoC 컨테이너
- 객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것
- 제어 역전을 통해 의존성 주입, 관점 지향 프로그래밍 등이 가능
1.1.2 의존성 주입(DI)
- 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입 받아 사용하는 방식
- 생성자를 통한 의존성 주입
- 필드 객체 선언을 통한 의존성 주입
- setter 메서드를 통한 의존성 주입 - Autowired 어노테이션을 통해 의존성 주입 가능
- 스프링 4.3 이후 버전은 생성자를 통한 의존성을 주입할 때 Autowired 생략 가능 - 스프링 공식 문서는 생성자를 통한 의존성 주입 권장
- why? 레퍼런스 객체 없이는 객체를 초기화할 수 없게 설계할 수 있기 때문
1.1.3 관점 지향 프로그래밍(AOP)
- AOP란? 관점을 기준으로 묶어 개발하는 방식.
- 관점? ‘핵심 기능’과 ‘부가 기능’으로 구분해 각각을 하나의 관점으로 보는 것을 의미
- 핵심 기능: 비지니스 로직을 구현하는 과정에서 비즈니스 로직이 처리하려는 목적 기능을 말함
- 부가 기능: 핵심 기능이 어떤 기능인지에 무고나하게 로직이 수행되기 전 또는 후에 수행되는 기능
- 로깅, 트랜잭션 등 - 비즈니스 로직에서 반복되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화해 삽입하는 방식
- 컴파일 과정에 삽입하는 방식
- 바이트코드를 메모리에 로드하는 과정에 삽입하는 방식
- 프락시 패턴을 이용한 방식 - 스프링은 프락시 패턴을 통해 AOP 기능을 제공
- 모듈화해서 재사용 가능한 구성을 만드는 것이 목적
1.2 스프링 프레임워크 vs 스프링 부트
필요한 모듈들을 추가하다 보면 설정이 복잡해지는 문제를 해결하기 위해 등장한 것이 스프링 부트 이다.
1.2.1 의존성 관리
- spring-boot-starter 의존성 제공
- spring-boot-starter 라이브러리
- spring-boot-starter-web: 스프링 MVC를 사용하는 RESTful 애플리케이션을 만들기 위한 의존성. 기본으로 내장 톰캣이 포함돼 있어 jar 형식으로 실행 가능
- spring-boot-starter-test: JUnit, Jupiter, Mockito 등의 테스트용 라이브러리 포함
- spring-boot-starter-jdbc: HikariCP 커넥션 풀을 활용한 JDBC 기능을 제공
- spring-boot-starter-security: 스프링 시큐리티(인증, 권한, 인가 등) 기능을 제공
- spring-boot-starter-data-jpa: 하이버네이트를 활용한 JPA 기능을 제공
- spring-boot-starter-cache: 스프링 프레임워크의 캐시 기능을 지원
1.2.2 자동 설정
스프링 부트는 스프링 프레임워크의 기능을 사용하기 위한 자동 설정을 지원합니다. 자동 설정은 애플리케이션에 추가된 라이브러리를 실행하는 데 필요한 환경 설정을 알아서 찾아줍니다. 즉, 애플리케이션을 개발하는 데 필요한 의존성을 추가하면 프레임워크가 이를 자동으로 관리해줍니다.
- SpringBootApplication
- SpringBootConfiguration
- EnableAutoConfiguration
- ComponentScan - 스프링 부트 애플리케이션이 실행되면
- ComponentScan 어노테이션이 Component 시리즈 어노테이션이 붙은 클래스를 발견해 bean을 등록 (대표 Component 시리즈 : Controller, RestController, Service, Repository, Configuration)
- EnableAutoConfiguration 을 통해 spring-boot-autoconfigure 패키지 안에 spring.factories 파일을 추가해 다양한 자동 설정이 일부 조건을 거쳐 적용된다.
728x90
'Software > Spring Boot 핵심 가이드' 카테고리의 다른 글
05_스프링부트 API 작성하기 (0) | 2023.05.07 |
---|---|
04_인텔리제이에서 스프링 부트 프로젝트 생성하기(애플리케이션 개발) (0) | 2023.05.07 |
03_2 인텔리제이 IDEA 설치하기 (0) | 2023.05.07 |
03_Mac OS에서 자바 JDK 설치하기 (0) | 2023.01.13 |
02_개발에 앞서 알면 좋은 기초 지식 (0) | 2022.11.28 |
댓글