Post

Spring[스프링이란]

Spring 프레임워크

Spring의 핵심이점 5가지

  1. 제어의 역전 (IoC)
    • 객체의 수명주기를 응용 프로그램이 아닌 Spring의 IoC 컨테이너가 제어함으로써, 더 모듈화되고 느슨하게 결합된 코드를 얻을 수 있습니다. 이는 더 쉬운 관리와 테스트를 가능하게 합니다.
  2. 관점 지향 프로그래밍 (AOP)
    • Spring은 AOP를 지원하여 개발자가 로깅, 보안 및 트랜잭션 관리와 같은 관심사를 비즈니스 로직에서 분리할 수 있습니다.
      이로 인해 코드의 모듈성과 유지/보수성을 향상시킵니다.
  3. 의존성 주입 (DI)
    • 객체가 직접 생성 및 관리되는 대신 Spring IoC 컨테이너로부터 주입되는 기술입니다.
      이로 인해 코드의 유연성과 테스트 용이성이 향상됩니다.
  4. 트랜잭션 관리
    • Spring은 선언적 트랜잭션 관리를 지원하여 개발자가 트랜잭션을 쉽게 구현하고 관리할 수 있도록 도와줍니다.
      이는 데이터베이스 및 다른 리소스와의 상호 작용에서 안정성을 제공합니다.
  5. 모듈성과 확장성
    • Spring은 모듈화된 구조를 제공하여 애플리케이션을 작은 독립적인 모듈로 분할할 수 있습니다.
      또한, 다양한 확장 포인트를 제공하여 애플리케이션의 확장성을 향상시킵니다.

객체지향 개념

객체지향의 네 가지 핵심 원칙

  1. 캡슐화:
    • 데이터(속성)와 해당 데이터에 작용하는 메서드(기능)를 클래스라는 단일 단위로 묶는 개념입니다.
    • 객체 외부에서 내부 상태의 직접 수정을 제한하여 정보 은닉을 달성합니다.
  2. 추상화:
    • 복잡한 시스템을 모델링하고 필수적인 속성과 동작을 기반으로 클래스를 단순화하는 개념입니다.
    • 불필요한 세부 사항을 무시하고 객체의 필수적인 특징에 중점을 둡니다.
  3. 상속:
    • 새로운 클래스(하위 클래스 또는 파생 클래스)가 기존 클래스(상위 클래스 또는 부모 클래스)의 속성과 메서드를 상속받는 메커니즘입니다.
    • 코드 재사용을 촉진하고 클래스의 계층 구조를 생성합니다.
  4. 다형성:
    • 다형성은 서로 다른 클래스의 객체를 공통 기본 클래스의 객체처럼 다룰 수 있게 하는 메커니즘입니다.
    • 하나의 인터페이스에서 여러 유형의 객체를 나타냅니다.
    • 컴파일 시 다형성(메서드 오버로딩, 함수 오버로딩 또는 연산자 오버로딩)과 런타임 다형성(상속을 통한 메서드 재정의)이 있습니다.

SOLID 원칙

  • SRP 단일 책임 원칙:
    • 각 클래스는 단일 책임만 가져야 하며 변경 사항이 발생할 때 최소한의 파급 효과를 가져야 합니다.
    • 즉, 하나의 클래스는 하나의 책임만 가져야 한다.
  • OCP 개방-폐쇄 원칙:
    • 소프트웨어 요소는 확장 가능하지만 수정되지 않아야 합니다. 기존 코드를 변경하지 않고 새로운 기능을 추가할 수 있어야 합니다.
    • 하지만, 다형성을 사용해서 OCP원칙을 지킬수는 없습니다.
    • 해결법 : 연관관계를 맺어준느 별도의 조립, 설정자가 필요합니다.( Spring Container )
  • LSP 리스코프 치환 원칙:
    • 프로그램의 객체는 부모 형식에서 파생된 형식의 인스턴스로 변환될 수 있어야 합니다. 이는 다형성을 지원하는 중요한 원칙으로, 인터페이스를 구현하는 객체는 해당 인터페이스 규칙을 따라야 합니다.
  • ISP 인터페이스 분리 원칙:
    • 클라이언트가 필요로 하는 기능만 포함하는 인터페이스를 정의해야 합니다.
  • DIP 의존성 역전 원칙:
    • 프로그래머는 추상적인 것에 의존해야 하며 구체적인 것에 의존해서는 안됩니다. 즉, 구현클래스에 의존하지말고, 인터페이스에 의존해야합니다.
    • 의존성 주입(DI)은 이 원칙을 따르기 위한 한 가지 방법으로, 클라이언트는 직접 클래스를 구현하는 대신 인터페이스를 사용 할 수 있습니다.

Spring의 핵심 기술

제어의 역전 (IoC)

프로그램의 제어흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것

의존성 주입 (DI)

한 객체가 다른 객체에게 필요한 것들을 직접 만들거나 찾지 않고, 외부에서 주입받는 방법

Spring Boot

Spring Boot는 Spring 프레임워크 기술을 편리하게 사용할 수 있게 해주는 도구입니다.
Spring Boot는 Spring 애플리케이션을 쉽게 생성하고 실행할 수 있도록 지원하며 별도의 웹 서버 설치 없이 개발을 가능하게게 하는 내장 웹 서버(Tomcat)를 제공합니다.

마무리

Spring에서는 다형성과 SOLID법칙을 가장 중요시합니다.

Spring 프레임워크를 백엔드 개발에 선택한 동기는 모듈화, 가벼운 컨테이너, 의존성 주입 (DI), 관점 지향 프로그래밍(AOP) 및 Java EE 복잡성 추상화의 강점에 있습니다.

This post is licensed under CC BY 4.0 by the author.