Spring Framework


<aside> 💡 스프링 프레임워크(Spring Framework)는 Java 언어를 기반으로 한 엔터프라이즈 급 어플리케이션을 만들기 위한 강력하고 통합적인 프레임워크이다. 핵심적인 목표는 Java 엔터프라이즈 개발을 더 쉽고 효율적으로 만드는 것이다.

</aside>

<aside> 1️⃣ 스프링 프레임워크의 핵심 기능 및 특징

</aside>

  1. 의존성 주입 (Dependency Injection, DI): 스프링 프레임워크의 가장 중요한 특징 중 하나이다. DI는 각 객체간의 의존성을 코드 내부에서 정의하는 것이 아니라, 외부(프레임워크)에서 주입하는 기법이다. 이를 통해서 코드의 결합도를 낮추고, 유연성과 테스트 용이성을 향상시킨다.
  2. 관점 지향 프로그래밍 (Aspect-Oriented Programming, AOP): AOP는 광범위하게 쓰이는 기능을 모듈화하는 프로그래밍 패러다임이다. 예를 들어, 로깅, 트랜잭션 관리, 보안 등의 공통 관심사(cross-cutting concern)를 분리하여 코드의 중복을 줄이고, 가독성과 유지 관리성을 향상시킨다.
  3. 데이터 접근과 트랜잭션 관리: 스프링은 JDBC, JPA, Hibernate 등 다양한 데이터 접근 기술에 대한 지원을 제공하며, 이를 추상화하여 일관된 데이터 접근 코드를 작성할 수 있게 한다. 또한, 선언적 트랜잭션 관리를 지원하여 데이터의 일관성을 유지하는 데 도움을 준다.
  4. 스프링 MVC: 스프링 프레임워크는 웹 어플리케이션을 개발하기 위한 MVC(Model-View-Controller) 패턴을 구현한 프레임워크인 스프링 MVC를 포함하고 있다. RESTful 웹 서비스, 웹 사이트, 웹 애플리케이션 등을 구축하는 데 사용된다.
  5. 스프링 시큐리티: 인증과 권한 부여, 공격으로부터의 보호 등의 보안 관련 기능을 제공한다.
  6. 테스트 지원: 스프링은 JUnit 등의 테스팅 프레임워크와 잘 통합되며, 스프링 테스트 모듈을 통해 스프링 어플리케이션의 단위 테스트 및 통합 테스트를 지원한다.
  7. 모듈화: 스프링 프레임워크는 여러 개의 모듈로 이루어져 있다. 이 모듈들은 각각의 책임을 가지고 있어 개발자가 필요한 기능만 선택하여 사용할 수 있다. 예를 들어, 스프링 웹 MVC는 웹 애플리케이션 개발에 필요한 기능을 제공하고, 스프링 보안은 애플리케이션의 보안 관련 기능을 제공합니다.
  8. POJO(Plain Old Java Object) 기반: 스프링은 POJO를 이용한 경량 개발을 지향한다. POJO는 복잡한 엔터프라이즈 기술에 종속되지 않는 단순한 Java 객체를 의미한다. 이를 통해 불필요한 상속 트리나 구현 클래스 없이 객체지향적인 설계를 할 수 있다.
  9. 선언적 트랜잭션 관리: 스프링은 트랜잭션 관리를 위한 선언적 방법을 제공한다. 이를 통해 개발자는 비즈니스 로직에만 집중하면서 트랜잭션을 안전하게 관리할 수 있다.
  10. 뛰어난 통합 지원: 스프링은 JPA, Hibernate, MyBatis 등의 ORM(Object-Relational Mapping) 기술과 JUnit, Mockito 등의 테스트 프레임워크와의 통합을 원활하게 지원한다. 또한, 스프링 부트라는 프로젝트를 통해 매우 빠르고 편리하게 스프링 기반의 애플리케이션을 개발하고 배포할 수 있다.
  11. Event Handling: 스프링은 이벤트 리스너를 등록하는 방식으로 이벤트를 처리할 수 있는 기능을 제공한다. 이를 통해 특정 이벤트가 발생하면 자동으로 특정 로직을 수행할 수 있다.

Spring Boot


<aside> 💡 Spring Boot는 스프링 프레임워크를 더욱 쉽게 사용할 수 있도록 도와주는 도구이다. Spring Boot의 주요 목표는 Spring 기반의 애플리케이션 개발을 빠르고, 쉽게, 편리하게 하는 것이다. Spring Boot는 기본 설정을 자동화하고, 개발자가 꼭 필요한 부분에만 집중할 수 있도록 도와준다.

</aside>

<aside> 1️⃣ Spring Boot의 주요 특징들

</aside>