-
SpringBoot - SpringBoot API 시작하기FrameWork/Spring&Spring-boot 2024. 1. 31. 14:51
SpringBoot API 시작하
Spring Boot의 장점
스프링 부트 어플리케이션은 최소한의 설정 작업만으로도 바로 실행하 수 있다. 스프링 부트가 단독 실행형 프로덕션 등급의 스프링 어플리케이션을 생성할 수 있는 이유는 스프링 부트안에 Java 진영에서 일반적으로 많이 사용하는 WAS Tomcat이 내장형으로 이미 탑재 되어 있기 때문이다. 이외에도 Jetty라든가 Undertow라는 웹 어플리케이션 서버를 내장하고 있기 때문에 실행을 위해서 별도의 서버를 설치할 필요가 없고, 기본적으로 스프링 부트 어플리케이션을 실행하는 것만으로도 웹 어플리케이션을 실행할 수 있게되는 것이다.
물론 개발된 스프링 부트 어플리케이션은 별도의 스프링 MVC 어플리케이션과 마찬가지로 WAR파일, 다시 말해서 웹 아카이브 파일 형태로 패키징을 하고, 별도의 웹 어플리케이션 서버에 배포할 수도 있다. 스프링 부트의 가장 큰 특징 중 하나가 스프링 프레임워크로 실행이 필요한 많은 API 스프링 부트에 기본적으로 설정되어 있는 starter라고 되어 있는 이 컴포넌트를 통해서 쉽게 구성정보(configuration)을 build할 수 있다.
또 스프링 프레임워크 실행하기 위해 필요한 다양한 설정 작업 역시 Auto-Configuration이라는 자동 설정 기능을 사용할 수가 있다. 기존에 스프링 어플리케이션은 IoC 작업이라던가 AOP작업을 하기 위해 별도의 XML 파일 설정 내용을 추가 하거나 어노테이션을 활용하는 것과 같은 작업을 해왔는데 이러한 작업 과정을 생략할 수 있게 된 것이다. 따라서 비지니스 로직을 처리하는데 시간을 투자할 수 있게 되었다. 더불어 스프링 부트 자체의 사용화에 필요한 통계라든가 상태 점검, 외부 설정을 위한 라이브러리 포함하고 있기 때문에 기본적인 내용만 가지고도 간단하게 모니터링 할 수 있는 기능도 지원한다.
💡tip) 제어의역전(IoC)와 관점 지향 프로그래밍(AOP)
제어의 역전(IoC:Inversion of Control)
IoC는 객체의 생성과 의존성 관리를 프레임워크에 위임하는 디자인 원칙이다. 즉, 개발자는 객체의 생명주와 의존성을 관리하기 위해 코드룰 작성하지 않고, 이를 프레임워크에 맡기는 것이다.
https://dodote10.tistory.com/448
관점 지향 프로그램밍(AOP)
AOP는 애플리케이션의 공통 관심사(cross-cutting concerns)를 핵심 로직에서 분리하여 모듈화 하는 프로그래밍 패러다임이다. 예를 들어, 로깅, 트랜잭션 관리, 보안 등은 여러 모듈에서 고통적으로 나타나는 관심사이다.
https://dodote10.tistory.com/221Spring Boot프로젝트의 간략한 구조
- Spring Boot Application
- Auto Configuration
- Component Scan
@SpringBootApplication public class MonsterApplication { public static void main(String[] args) { ApplicationContext application = SpringApplication.run(MonsterApplication.class, args); for(String str:application.getBeanDefinitionNames()){ System.out.println(str); } } }
스프링 부트로된 어플리케이션을 실행하기 위해서는 스프링부트 템플릿에 의해서 생성된 main 클래스를 실행하면된다. main 클래스는 다른 클래스와 달리 @SpringBootApplication이라는 노테이션이 달려있다.
첫번째로 실행되는 main 클래스의 경우 Auto Configuration이라는 기능을 통해서 개발하고자 하는 어플리케이션에 필요한 각종 설정 작업을 자동으로 할 수 있다. 필요에 따라서는 개발자가 등록한 환경을 찾아서 읽어 오기도 한다.
다음으로 Component Scan이라는 과정을 통해서 프로젝트에 선언된 각종 컴포넌트들을 읽어오게 된다. 스프링 프레임 워크에서는 사용 용도에 따라서 컴포넌트가 Service, Repository, Controller, Entity등으로 과 같이 구분되는 여러가지 클래스 유형이 존재한다. 이런 클래스의 인스턴스를 스프링 컨테이너의 메모리로 읽어와서 어플리케이션을 사용할 수 있는 형태의 객체의 빈 형태로 등록하게 된다.
이렇게 스프링 어플리케이션에서는 개발자가 직접 코드로 크래스의 인스턴스를 생성하는 것이 아니라 스프링 컨테이너에 의해서 인스턴스가 미리 생성되고 개발자는 생성된 인스턴스를 호출해서 사용한다. 컨테이너로 클래스의 인스턴스가 관리되고 있기 때문에 이러한 방식을 제어의 역전(IoC)라고 한다.
jar VS war
jar을 선택할 것인지 war을 선택할 것인지는 독립적으로 톰캣을 서버를 구동할 것인지 외부에 있는 톰켓에다가 배포를 해서 쓸 것이지에 따라 구분해서 선택하면 된다.
jar file
자르 파일은 실행하면 실행하는 어플리케이션 내에서 내장된 톰캣이 기본적으로 실행이된다. 즉 Java 클래스를 실행하는 것 만으로 톰캣 서버가 구동되는 것이다.
war file
와르 파일을 선택하게 되면 만들게된 어플리케이션을 확장자 war을 갖게 패키징이 되고, 이렇게 패키징 되어 있는 파일은 외부에 있는 WAS에 배포해서 사용하게 된다.
[출저 - Spring Boot 3.x를 이용한 RESTful Web Service 개발, 저 Dowon Lee]
https://www.inflearn.com/course/spring-boot-restful-web-services
'FrameWork > Spring&Spring-boot' 카테고리의 다른 글
Spring Boot API - User Service, Exception Handing... (0) 2024.02.19 SpringBoot - Bean추가, Configuration, Path Variable (0) 2024.02.19 스프링 MVC 2 - 메시지, 국제화(소개, 스프링 메시지 소스 설정) (0) 2023.12.07 Spring 기본 37 - 웹 스코프(request스코프 예제 만들기) (1) 2023.11.30 Spring 기본 36 - 프로토타입 스코프(싱글톤 빈과 함께 사용시 Provider로 문제 해결) (0) 2023.11.30