본문 바로가기
IT 개발 이야기/Spring

[Spring Boot 시작하기] 웹 개발의 혁신, 스프링부트 기본 이해

by 개발자 Aiden 2023. 2. 17.
반응형

Spring Framework: Java 웹 애플리케이션의 핵심

Spring은 전 세계에서 가장 널리 사용되는 Java 기반 웹 애플리케이션 프레임워크입니다. 국내외 다양한 웹 서비스, 특히 공공 및 금융 분야에서 Spring 기반의 서비스가 활발히 제공되고 있습니다.

왜 Spring을 선택하는가?

  1. 효율성 : Spring은 개발자에게 필요한 기본 구조와 기능을 제공하여, 비즈니스 로직 구현에만 집중할 수 있게 해 줍니다.
  2. 코드 품질 : Spring의 기본 디자인 패턴은 코드의 품질과 유지보수성을 보장합니다.
  3. 비용 절감 : 효율적인 개발 프로세스는 프로젝트 비용을 절감하게 해 줍니다.

Spring Framework: Java 웹 애플리케이션의 핵심


Spring의 핵심 기능

  • 경량 컨테이너 : Spring은 자바 객체의 생명주기와 의존성을 관리합니다.
  • 의존성 주입(DI) : 객체 간의 의존 관계를 설정하고 관리합니다.
  • 제어의 역전(IoC) : 객체의 생명주기와 의존성을 외부에서 관리하게 해 줍니다.
  • AOP(관점지향 프로그래밍) : 공통 기능을 여러 코드에 쉽게 적용할 수 있게 해 줍니다.

이러한 복잡한 이론보다는 실제 서비스 구현 코드를 통해 Spring의 핵심을 이해하는 것이 더 효과적입니다. 다음 포스트에서는 실제 웹 서비스 구현 예제를 통해 Spring의 중요한 개념들을 하나씩 살펴보겠습니다.

반응형


Spring Boot와 그 장점

Spring Boot는 Spring의 설정 복잡성을 줄이고, 빠르게 웹 애플리케이션을 구축할 수 있게 도와주는 프레임워크입니다. 그렇다면, Spring Boot가 제공하는 주요 장점은 무엇일까요?

주요 장점:

  • 간소화된 설정 : Spring Boot는 개발자에게 복잡한 설정 없이도 웹 애플리케이션을 빠르게 시작할 수 있는 환경을 제공합니다. 주요 어노테이션인 `@SpringBootApplication`은 내부적으로 `@SpringBootConfiguration`, `@EnableAutoConfiguration`, 그리고 `@ComponentScan`으로 구성되어 있습니다. 이 어노테이션들은 미리 정의된 auto-configuration 대상 클래스를 Bean으로 등록하며, `@Component` 등의 어노테이션이 매핑된 클래스도 Bean으로 등록합니다.
  • 내장 Servlet Container : Spring Boot는 내장된 Servlet Container를 포함하고 있어, 별도의 WAS 설정 없이 애플리케이션을 배포할 수 있습니다. 이로 인해 개발자는 쉽고 빠르게 서비스를 구현하고 배포할 수 있습니다.
  • 의존성 관리 : Spring Boot는 'starter' 의존성을 통해 관련된 라이브러리들을 한 번에 가져올 수 있게 해 줍니다. 이로 인해 개발자는 각 라이브러리의 호환성 문제없이 안정적으로 애플리케이션을 개발할 수 있습니다.
  • 자동 설정 : Spring Boot는 애플리케이션에 필요한 여러 설정을 자동으로 해줍니다. 예를 들어, Spring Boot는 데이터베이스 연결이나 JPA 설정을 자동으로 인식하고 설정해 줍니다.
  • 생산성 향상 : Spring Boot는 개발 및 테스트 도구를 제공하여 개발자의 생산성을 향상시킵니다. 예를 들어, `spring-boot-devtools`는 코드 변경 시 자동으로 애플리케이션을 재시작해 줍니다.

 

Spring Boot의 핵심: @SpringBootApplication

Spring Boot 프로젝트를 시작할 때, 주로 메인 클래스에 `@SpringBootApplication` 어노테이션을 사용합니다. 이 어노테이션은 Spring Boot의 핵심이며, 여러 기능들을 한 번에 활성화시켜 줍니다.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class LocalTestApplication {

  public static void main(String[] args) {
    SpringApplication.run(LocalTestApplication.class, args);
  }
}


하지만 이 `@SpringBootApplication` 어노테이션은 단순히 하나의 어노테이션만을 의미하는 것이 아닙니다. 내부적으로는 여러 다른 어노테이션들로 구성되어 있습니다.

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { 
      @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
      @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
  /**
   * Exclude specific auto-configuration classes such that they will never be applied.
   * @return the classes to exclude
   */
  @AliasFor(annotation = EnableAutoConfiguration.class)
  Class<?>[] exclude() default {};


- @EnableAutoConfiguration
  : Spring Boot의 자동 설정 기능을 활성화합니다. 이를 통해 미리 정의된 auto-configuration 대상 클래스를 Bean으로 등록합니다.

- @ComponentScan
  : 지정된 패키지 하위에 있는 `@Component`, `@Service`, `@Repository`, `@Controller` 등의 어노테이션이 붙은 클래스를 자동으로 스프링의 Bean으로 등록합니다.

이렇게 `@SpringBootApplication`은 여러 기능을 한 번에 제공하여 개발자가 빠르게 웹 애플리케이션을 구축할 수 있게 도와줍니다. 이러한 세부적인 내용을 이해하면, Spring Boot를 사용할 때 더욱 효과적으로 활용할 수 있게 됩니다.


Spring Boot는 웹 개발 환경에서 널리 사용되고 있는 프레임워크입니다. 그 이유는 그만큼 실무에서 효율적이고 강력한 기능을 제공하기 때문입니다. 이번 글에서는 Spring Boot의 기본적인 특징과 간단한 동작 원리에 대해 알아보았습니다.

앞으로도 Spring Boot를 활용하여 다양한 서비스를 구축해 보며, 그 과정에서 Spring Boot의 다양한 기능과 특징을 소개하게 될 것입니다. Spring Boot와 함께라면, 복잡한 웹 개발도 한층 더 쉽고 효율적으로 진행할 수 있습니다. 


※ OAuth 2.0과 Spring Boot를 활용한 사내 인증 서비스 구축

 

OAuth 2.0과 Spring Boot를 활용한 사내 인증 서비스 구축

오늘부터 시작하는 이 시리즈에서는 Spring Boot를 활용하여 사내 OAuth 인증 서비스를 직접 개발해 보는 과정을 단계별로 소개하려고 합니다. 이 프로젝트에서는 Spring Security 없이 OAuth 2.0 인증 서버

aday7.tistory.com

반응형

댓글


loading