Spring기본
2024. 11. 26. 14:07

Spring Framework는 자바 플랫폼(Java Platform)을 기반으로 하는 강력하고 유연한 애플리케이션 개발 프레임워크입니다. 다양한 종류의 자바 애플리케이션(웹, 데스크톱, 배치 프로세스 등)을 쉽게 개발할 수 있도록 도와줍니다. Spring은 모듈화와 구성의 유연성을 제공하며, 가장 많이 사용되는 Java 프레임워크 중 하나입니다.

Spring의 주요 특징

  1. 경량(Lightweight):
    • 애플리케이션에 필요한 것만 선택적으로 사용 가능.
    • 핵심 컨테이너는 작고 효율적으로 설계.
  2. 의존성 주입(Dependency Injection, DI):
    • 객체 간의 의존성을 Spring 컨테이너가 관리.
    • 객체 간 결합도를 낮추어 유연성과 재사용성을 높임.
  3. AOP(Aspect-Oriented Programming):
    • 횡단 관심사(Cross-cutting Concerns, 예: 로깅, 트랜잭션)를 효과적으로 분리.
    • 핵심 비즈니스 로직과 부가 기능(Aspect)을 분리하여 관리.
  4. 모듈화:
    • 여러 모듈로 구성되어 필요한 기능만 선택적으로 사용 가능.
    • 주요 모듈:
      • Core Container
      • Data Access/Integration
      • Web
      • Security
      • AOP
  5. 테스트 용이성:
    • DI와 유연한 설정 덕분에 단위 테스트와 통합 테스트 작성이 용이.

Spring의 주요 컴포넌트

1. Spring Core

  • DI와 IoC(Inversion of Control)를 지원.
  • 객체 생명 주기를 관리하고 의존성을 주입.

2. Spring AOP

  • 애플리케이션 로직과 부가 기능을 분리.
  • 예: 트랜잭션 관리, 로깅, 보안.

3. Spring Data Access

  • JDBC, ORM(Hibernate, JPA)와의 통합 지원.
  • 데이터베이스 접근을 간소화.

4. Spring Web

  • 웹 애플리케이션 개발 지원.
  • Servlet, JSP와의 통합.
  • Spring MVC 제공: 요청-응답 처리를 체계적으로 관리.

5. Spring Security

  • 인증(Authentication)과 권한 부여(Authorization)를 제공.
  • 자바 애플리케이션의 보안을 손쉽게 구현 가능.

6. Spring Boot

  • Spring의 설정 복잡성을 줄이기 위해 설계된 하위 프로젝트.
  • 자동 구성(Auto Configuration), 내장 서버(Embedded Server) 등 제공.
  • "Spring을 더 쉽고 빠르게 사용"하는 데 중점.

7. Spring Batch

  • 대량 데이터 처리 애플리케이션 지원.
  • 배치 작업(job)의 정의, 실행, 관리 기능 제공.

Spring의 핵심 개념

1. 의존성 주입(DI)과 IoC 컨테이너

  • 객체 생성 및 관리 작업을 개발자가 아닌 Spring 컨테이너가 담당.
  • 예:
    java
    코드 복사
    @Service public class MyService { private final MyRepository repository; @Autowired public MyService(MyRepository repository) { this.repository = repository; } }

2. 애노테이션 기반 설정

  • XML 설정을 대체하여 애노테이션을 통해 구성.
  • 예:
    • @Component, @Service, @Repository로 컴포넌트 선언.
    • @Autowired로 의존성 주입.

3. POJO 기반 개발

  • 기존 자바 객체(Plain Old Java Object, POJO)를 사용하여 개발.
  • 특정 인터페이스나 클래스를 상속하지 않아도 됨.

Spring의 장점

  1. 유연성:
    • 다양한 환경에 맞게 설정 가능.
    • 프로젝트 규모에 맞는 모듈 선택 가능.
  2. 생산성 향상:
    • 많은 반복 작업을 줄이고 개발 속도 향상.
  3. 커뮤니티 지원:
    • 오픈소스 프로젝트로, 방대한 문서와 사례 제공.
  4. 확장성:
    • 필요에 따라 손쉽게 확장 가능.
  5. 테스트 지원:
    • Spring은 JUnit, Mockito 같은 도구와 통합이 쉽고 테스트 작성이 용이.

Spring이 사용되는 곳

  • 웹 애플리케이션:
    • Spring MVC, Spring Boot를 활용한 웹 개발.
  • REST API:
    • Spring Web과 Spring Boot를 활용해 RESTful API 설계.
  • 데이터베이스 애플리케이션:
    • Spring Data JPA와 Spring JDBC로 데이터 처리.
  • 마이크로서비스:
    • Spring Cloud와 Spring Boot를 활용.
  • 보안:
    • Spring Security로 인증 및 권한 관리.

'Spring' 카테고리의 다른 글

Spring Security  (0) 2025.02.10
WebSocket 예제  (0) 2024.12.05
WebSocket  (0) 2024.12.05
Spring - AutoWired  (0) 2024.11.27
쿠키(Cookie)  (0) 2024.11.19