스프링 프레임워크
스프링 프레임워크란 자바 기반의 오픈 소스 애플리케이션 프레임워크로서, 엔터프라이즈급 애플리케이션을 개발하기 위한 여러 가지 기능과 추상화된 라이브러리들을 제공하는 경량의 프레임워크입니다. 스프링 프레임워크는 경량 컨테이너로 자바 객체를 담고 직접 관리합니다. 객체의 생성 및 소멸 그리고 생명주기를 관리하며 언제든 스프링 컨테이너로 부터 객체를 가져와 사용할 수 있습니다.
스프링 프레임워크의 장점
- 경량화와 모듈성 : 스프링은 필요한 모듈만 선택하여 사용할 수 있도록 모듈화가 잘 되어 있습니다. 이로 인해 애플리케이션에 필요한 기능만 사용할 수 있으며, 불필요한 부분은 포함시키지 않아도 됩니다.
- IoC와 DI : 제어의 역행과 의존성 주입은 애플리케이션의 유지보수성을 향상시키고 테스트 용이성을 높여줍니다. 객체 간의 결합도가 낮아져 느슨한 결합을 유지할 수 있습니다.
- AOP(관점 지향 프로그래밍) 지원 : 부가적인 관심사를 분리하여 코드 중복을 줄이고 가독성을 높여줍니다. 로깅, 트랜잭션 관리, 보안 등과 같은 부가적인 기능을 별도로 모듈화하여 적용할 수 있습니다.
- 데이터 액세스 추상화 : JDBC, JPA, Hibernate와 같은 다양한 데이터 액세스 기술을 지원하며, 데이터베이스와의 상호작용을 편리하게 처리할 수 있도록 도와줍니다.
- 웹 개발 지원 : 스프링 MVC를 통해 웹 애플리케이션을 개발할 수 있습니다. MVC 아키텍처를 지원하여 비즈니스 로직과 프레젠테이션 계층을 분리할 수 있습니다.
- 다양한 통합 기술 : 스프링은 다양한 기술과 라이브러리와 통합이 잘 되어 있습니다. REST API, 메시징 시스템, 데이터베이스, 캐시 등과의 연동이 용이합니다.
IoC
IoC란 Inversion of Control의 약자로 제어의 역행 이라고 불립니다. 소프트웨어 개발에서 객체의 생명주기 관리와 의존성 주입을 개발자가 아닌 외부 컨테이너나 프레임워크가 담당하는 개념을 나타냅니다.
일반적인 프로그래밍에서는 개발자가 객체를 직접 생성(new, 객체화)하고 관리하며, 객체 간의 의존성도 직접 처리합니다. 그러나 IoC에서는 이런 제어의 흐름이 역전되어, 객체의 생성과 관리, 의존성 주입 등의 제어 권한을 개발자가 아닌 외부 컨테이너나 프레임워크에게 위임하는 것을 의미합니다.
개발자가 객체를 직접 생성(new, 객체화)
개발자가 직접 객체를 생성하면 하나의 변경사항이 생겼을 때 코드가 무조건 변경됩니다. 이는 컴파일을 다시 해야함을 의미하여 결합도가 높아집니다. 그러므로 유지보수에 불리해집니다.
소프트웨어 개발 디자인 패턴
소프트웨어 개발 디자인 패턴은 일반적인 문제들에 대한 해결책을 패턴화한 것으로, 반복적으로 발생하는 설계 상의 문제들을 해결하기 위한 일종의 가이드라인입니다. 디자인 패턴은 코드의 구조와 구성을 개선하여 유지보수성, 재사용성, 가독성 등을 향상시키는 데 도움을 줍니다.
소프트웨어 개발 디자인 패턴 종류
- 싱글톤 패턴 (Singleton Pattern)
- 팩토리 패턴 (Factory Pattern)
- 옵저버 패턴 (Observer Pattern)
싱글톤 패턴
하나의 클래스가 오직 하나의 인스턴스만을 가질 수 있도록 보장하는 패턴입니다. 전역 변수를 통해 인스턴스를 공유하고 중복 생성을 방지하여 메모리를 절약할 수 있습니다.
팩토리 패턴
객체의 생성을 서브 클래스로 분리하여 객체 생성 방식을 추상화하는 패턴입니다. 객체 생성 로직을 수정하지 않고 새로운 객체 생성 방식을 추가할 수 있습니다.
GitHub
https://github.com/Qkrwnsgus0522/Spring