본문 바로가기

UIUX Full-Stack Developer

[0730] 스프링부트 SPRINGBOOT 개념정리

"스프링 부트(Spring Boot)"와 "자바(Java)"는 둘 다 자바를 기반으로 하는 프로그래밍 도구이지만, 그들의 역할과 사용처는 매우 다릅니다.

자바(Java)는 범용 프로그래밍 언어로, 객체 지향적이고 클래스 기반의 프로그래밍을 지원합니다. 이를 통해 개발자는 다양한 타입의 애플리케이션을 개발할 수 있습니다. 자바는 '한 번 작성하면 어디서나 실행할 수 있다(Write Once, Run Anywhere)'는 원칙을 가지고 있어, 다양한 플랫폼에서 실행될 수 있는 것이 특징입니다.

반면에 스프링 부트(Spring Boot)는 자바를 기반으로 하는 프레임워크입니다. 스프링 부트는 스프링 프레임워크의 설정 단순화와 빠른 개발을 돕는 도구로 설계되었습니다. 스프링 부트는 복잡한 XML 구성을 대체하고, 미리 설정된 '의견'이 포함되어 있어서 개발자가 빠르게 시작하고 애플리케이션을 실행할 수 있도록 도와줍니다.

즉, 자바는 프로그래밍 언어이며, 스프링 부트는 그 언어를 사용하여 웹 애플리케이션을 빠르고 효율적으로 개발하기 위한 프레임워크라고 할 수 있습니다. 스프링 부트는 자바 언어를 사용하여 코딩되며, 자바의 강력한 기능을 활용하면서도 개발과 배포 과정을 단순화하고 효율화하려는 목표를 가지고 있습니다.

 

스프링 부트(Spring Boot)에서 사용되는 몇 가지 주요 개념들은 다음과 같습니다:

의존성 관리(Dependency Management): 스프링 부트는 Maven이나 Gradle과 같은 빌드 도구와 함께 작동하여 필요한 라이브러리들을 자동으로 가져오고 관리할 수 있습니다. 이는 개발자가 각 라이브러리의 호환성을 걱정하지 않고 빠르게 개발에 집중할 수 있게 도와줍니다.

자동 구성(Auto-configuration): 스프링 부트는 프로젝트의 필요에 따라 자동으로 구성을 설정합니다. 예를 들어, 스프링 부트는 웹 서버에 필요한 Bean들을 자동으로 설정하고, 데이터베이스 연결을 자동으로 구성할 수 있습니다.

내장 서버(Embedded Server): 스프링 부트는 Tomcat, Jetty, Undertow와 같은 서버를 내장하고 있어서, 별도의 서버 설치 없이 애플리케이션을 실행하고 테스트할 수 있습니다.

스프링 부트 스타터(Spring Boot Starters): 스프링 부트는 여러 가지 '스타터' 의존성 패키지를 제공하여, 개발자가 필요한 의존성을 쉽게 추가할 수 있도록 돕습니다. 예를 들어, 'spring-boot-starter-web'은 웹 애플리케이션 개발에 필요한 의존성들을 제공합니다.

Actuator: 스프링 부트 Actuator는 애플리케이션의 여러 가지 운영 관련 기능(애플리케이션의 상태 확인, 메트릭스 수집 등)을 제공합니다.

프로퍼티 설정(Property Settings): 스프링 부트에서는 'application.properties' 또는 'application.yml' 파일을 통해 애플리케이션의 여러 설정값을 쉽게 관리할 수 있습니다.

이 외에도 스프링 부트는 다양한 기능과 개념을 제공하므로, 실제 애플리케이션 개발에서 필요한 요구 사항에 따라 적절한 기능을 선택하여 사용할 수 있습니다.

 

@Data: 클래스에 @Data 어노테이션을 추가하면, 롬복은 자동으로 해당 클래스에 대한 getter, setter, equals, hashCode, toString 메서드를 생성합니다.

@Getter / @Setter: 각각 필드에 대한 getter와 setter 메서드를 자동으로 생성합니다.

@AllArgsConstructor / @NoArgsConstructor / @RequiredArgsConstructor: 이들 어노테이션을 사용하면, 롬복은 모든 필드를 인자로 받는 생성자, 아무 인자도 받지 않는 생성자, 필수적인(즉, final로 선언된 또는 @NonNull 어노테이션이 추가된) 필드만을 인자로 받는 생성자를 각각 생성합니다.

@Builder: 빌더 패턴을 쉽게 구현할 수 있게 해주는 어노테이션입니다. 빌더 패턴을 사용하면, 인스턴스의 상태를 변경하면서 생성할 수 있습니다.

@Slf4j: 로깅 객체를 생성하고 사용할 수 있게 도와줍니다.

이처럼 롬복은 다양한 어노테이션을 통해 보일러플레이트(필요하지만 반복적으로 작성해야 하는 코드)를 크게 줄여줍니다. 그러나 롬복을 사용하면서 주의해야 할 점도 있습니다. 롬복은 어노테이션 기반으로 동작하기 때문에, 코드 내에서는 생성된 메서드가 직접적으로 보이지 않습니다. 이로 인해 코드를 읽는 것이 어려울 수 있고, 디버깅도 어렵게 만들 수 있습니다. 따라서 롬복을 사용할 때는 이런 점들을 고려해야 합니다.

'UIUX Full-Stack Developer' 카테고리의 다른 글

[0731] JS / JSX  (0) 2023.07.31
[0731] GITHUB / FIGMA To VSCode  (0) 2023.07.31
[0728] 자바스크립트 DAY10  (0) 2023.07.28
[0726] 자바스크립트 DAY 09  (0) 2023.07.26
[0726] React Router  (0) 2023.07.26