본문 바로가기

Backend/Spring | SpringBoot28

[Spring] 스프링 예제 - 주문과 할인1 (OCP와 DIP 미적용) 목차 비지니스 요구사항 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수도 있고, 외부 시스템과 연동할 수도 있다. (미확정) 주문과 할인 회원은 상품을 주문할 수 있다 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해 달라. 하지만, 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했다. 오픈 직전까지 고민을 미루고 싶고, 최악의 경우 할인을 적용하지 않을 수도 있다. (미확정) 요구사항의 미확정: DB, 할인 정책 요구사항을 보면 회원 데이터, 할인 정책은 지금 결정하기 어려운 부분입니다. 그렇다고, 정책이 결정될 때까지 개발을 무기.. 2023. 7. 28.
[Spring] SOLID와 스프링 목차 서론 SOLID의 원칙과 스프링을 연관지어 알아봅시다. 클린 코드로 유명한 로버트 마틴의 좋은 객체 지향 설계의 5가지 원칙 (SOLID) SRP: 단일 책임 원칙 (Single Responsibility Principle) OCP: 개방-폐쇄 원칙(Open/Closed Principle) LSP: 리스코프 치환 원칙(Liskov Substitution Principle) ISP: 인터페이스 분리 원칙(Interface Segregation Principle) DIP: 의존관계 역전 원칙(Dependency Inversion Principle) SRP 단일 책임 원칙 Single Responsibility principle 한 클래스는 하나의 책임만 가져야 한다는 원칙입니다. 하지만, 하나의 책임이.. 2023. 7. 20.
[Spring] 스프링은 왜 만들었나요? 스프링과 객체지향 목차 서론 스프링 기술을 왜 만들었고, 이 기술의 핵심 컨셉이 무엇인지 알아봅시다. 스프링의 핵심 개념 및 컨셉? 사람들이 흔히들 하는 오해는 다음과 같습니다. 웹 애플리케이션을 만들고, DB 접근을 편리하게 해주는 기술이다. 전자 정부 프레임워크이다. 웹 서버를 자동으로 띄워주는 기술이다. 클라우드, 마이크로서비스를 위한 기술이다. 스프링의 진짜 핵심 스프링은 자바 언어 기반의 프레임워크 자바 언어의 가장 큰 특징은 객체 지향 언어이다. 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다. 스프링은 좋은 개체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크이다. 여기서의 핵심은 스프링은 좋은 객체 지향 프로그래밍을 위한 프레임워크입니다. 좋은 객체 지향 프로그래밍은 무엇일까요?.. 2023. 7. 20.
[SpringBoot] 웹 스코프 (Request 스코프) 목차 서론 이전에 싱글톤, 프로토타입 스코프, Provider 과 관련된 글을 작성했습니다. 이번엔 웹 스코프에 대해 작성하겠습니다. 빈의 종류 종류 설명 싱글톤 기본 스코프. 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 request 웹 요청이 들어오고 나갈 때까지 유지되는 스코프이다. session 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. application 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다. 웹 스코프의 특징 웹 스코프는 웹 환경에서만 동작합니다. 웹 스코프는 프로토타입과 다르게 스프링이 해당 스.. 2023. 7. 10.
[SpringBoot] DL (ObjectProvider, JSR-330 Provider) 목차 서론 전에 작성했던 글에서 싱글톤 빈과 프로토타입 스코프 빈을 함께 썼을 때, 프로토타입 빈이 제대로 동작하지 않는 문제점에 관해 작성했습니다. 이에 대한 해결책으로 싱글톤 빈이 프로토타입을 주입받는 대신 스프링 컨테이너 전체를 주입받아 해결했는데, 이 방법 또한 스프링 컨테이너에 종속적인 코드가 되고 단위테스트가 어려워진다는 문제점이 있습니다. 오늘 작성할 ObjectProvider와 JSR-330 Provider를 통해 이 문제를 해결할 수 있습니다. 지정한 프로토타입을 필요한 시점에 스프링 컨테이너에서 대신 찾아주는, 즉, 의존관계를 주입받는게 아니라 직접 찾아 쓰는 의존관계 탐색 (DL, Dependency Lookup)의 기능을 수행하는 역할을 합니다. (아래의 예제는 전에 작성한 글의 예.. 2023. 7. 10.
[SpringBoot] 빈 스코프 (싱글톤과 프로토타입 스코프) 목차 빈 스코프란? 기본적인 스프링 빈은 싱글톤 스코프로 생성이 됩니다. 싱글톤 스코프란, 스프링 컨테이너의 시작과 함께 생성되어 스프링 컨테이너가 종료될 때까지 유지되는 빈입니다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻합니다. 스프링은 다음과 같은 다양한 스코프를 지원합니다. 빈의 종류 종류 설명 싱글톤 기본 스코프. 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 request 웹 요청이 들어오고 나갈 때까지 유지되는 스코프이다. session 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. application 웹의.. 2023. 7. 9.