Design Pattern에 대한 스터디를 준비하다가 Medium 에서 좋은 글을 발견해서 정리해보려고 합니다.
추가적으로 덧붙인 내용들이 있습니다. 틀린 정보가 있다면 언제든 알려주세요!
https://medium.com/stackademic/top-7-spring-boot-design-patterns-unveiled-4a2569f8d324
Top 7 Spring Boot Design Patterns Unveiled
Spring Boot, built on top of the Spring framework, incorporates various design patterns to enhance the development, scalability…
blog.stackademic.com
스프링 부트에서 여러 디자인 패턴들을 사용하는 이유
1. 모듈화 및 재사용성
- 디자인 패턴은 복잡한 시스템을 작고, 다루기 쉬운 부분으로 나누게(모듈화를) 도와줍니다.
- 스프링 부트의 DI, AOP와 같은 패턴이 느슨한 결합을 구현하여 애플리케이션 전체에서 재사용할 수 있는 컴포넌트를 만듭니다.
2. 개발 단순화
- 소프트웨어 개발에서 발생하는 일반적인 문제에 대해 해결책을 제공합니다.
- 스프링 부트에서는 데이터베이스 액세스, RESTful API, 보안 등과 같은 기능을 개발하는 것을 단순화하는 기능을 제공합니다.
3. 유지보수 및 테스트
- MVC 패턴을 통해 개별 컴포넌트를 독립적으로 테스트할 수 있다.
4. 확장성 및 성능
- 디자인 패턴을 올바르게 사용하면 확장성과 성능을 향상시킬 수 있습니다.
- 팩토리 패턴과 같은 생성(creational) 패턴의 경우 객체 생성을 효율적으로 관리할 수 있게 도와줍니다.
- 스프링 부트에서는 @Builder 어노테이션을 사용하여 쉽게 객체를 생성하고 값을 넣을 수 있는데 생성 패턴 중 하나인 Builder 패턴을 쉽게 사용할 수 있도록 구현되어 있는 것입니다.
5. 유연성과 확장성
- 전략(strategy) 패턴을 적용하면 런타임에 알고리즘이나 구현을 선택할 수 있으므로 시스템이 변화에 더 잘 대처할 수 있습니다.
- 스프링 부트 자체가 직접적으로 strategy 패턴을 사용하지는 않습니다.
그러나 스프링 프레임워크는 IoC(Inversion of Control) 컨테이너를 기반으로 객체의 생성, 관리, 의존성 주입을 담당하는데, 의존성 주입(Dpendency Injection, DI)을 통해 객체 간의 결합도를 낮추고 유연성을 확보할 수 있습니다.
DI 구현 방식중 하나로 스프링 프레임워크는 빈(Bean)을 등록하고 이를 조립할 때 일종의 전략을 사용합니다.
또한, 스프링 부트는 프로퍼티 설정, 프로파일, 컨버터 등 다양한 기능에서도 전략 패턴을 활용하여 유연성을 부여합니다.
그러므로 스프링 부트는 전반적으로 IoC 및 다양한 기능에서 전략 패턴의 원리를 적용하고 있습니다.
6. 표준화
- 디자인 패턴을 사용함으로써 스프링 부트는 애플리케이션의 구조를 일관되게 유지할 수 있습니다.
- 5번에서 설명한 IoC를 사용하여 일관된 방식으로 빈을 관리하고 의존성을 주입할 수 있게 해주며, 이는 모든 개발자들에게 표준화된 구조를 제공합니다.
7. 협업
- 표준화로 인해 발생하는 장점으로, 표준화가 되어있기 때문에 다른 사람의 코드를 보더라도 이해하기가 쉬워집니다.
'Spring' 카테고리의 다른 글
[Spring][JPA] ORM & JPA (0) | 2023.08.14 |
---|