Backend Dev
-
[Spring] IoC, DI 그리고 컨테이너Backend Dev/Spring Framework 2022. 3. 8. 19:16
제어의 역전 IoC(Inversion of Control) 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고 실행하였다. 즉, 클라이언트가 프로그램의 제어 흐름을 조종했다. AppConfig가 등장한 이후로 클라이언트 구현 객체는 자신의 로직을 실행하는 역할만 담당하고 제어 흐름은 AppConfig가 담당한다. 결국 프로그램 제어 흐름에 대한 권한은 AppConfig가 가지고 있으며, OrderServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모르고 OrderService 인터페이스의 다른 구현 객체를 생성하고 실행할 수도 있다. 어떤 인터페이스의 구현체가 실행될지도 모른체 OrderServiceImpl은 자신의 로직 "실행"에만..
-
[Spring] 객체 지향 설계의 적용Backend Dev/Spring Framework 2022. 3. 8. 03:14
객체 지향의 원리와 설계 원칙을 소스코드로 적용해보려 하고, 스프링을 사용하지 않는 순수 자바로만 코드를 작성하는 단계에서 생기는 문제점부터 짚어볼 것이다. 아래의 클라이언트 코드를 변경해야 하는데, 왜 변경이 필요한 것일까? public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } OrderServiceImpl이 DiscountPolicy라는 인터페이스에 의존하면서 구체 클래스에도 의존을 하기에 DI..
-
[Spring] 좋은 객체 지향 설계를 위한 5원칙, SOLIDBackend Dev/Spring Framework 2022. 3. 3. 16:07
이전 포스팅에서 스프링과 객체 지향 프로그래밍의 컨셉과 핵심에 대해 알아보았는데 이번에는 스프링 프레임워크가 객체 지향 설계를 하는 데 있어서 어떤 이점과 관계가 있는지 알아보려 한다. 스프링에서 지원하는 제어의 역전(IoC)이나 의존관계 주입(DI)과 같은 기술은 다형성과 함께 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 역할과 구현의 분리에 대한 이해가 부족하다면 아래 글을 통해 내용을 숙지하고 보는 게 좋을 것 같다. [Spring] 스프링과 객체 지향 설계 Spring이란? 스프링을 나타내는 의미는 문맥에 따라 다양한데 스프링 DI 컨테이너 기술, 스프링 프레임워크, 스프링 생태계 자체를 의미하기도 한다. 스프링의 주 기술은 스프링 DI 컨테이너, AOP, 6ro-29.tistory.com ..
-
[Spring] 스프링과 객체 지향 설계Backend Dev/Spring Framework 2022. 3. 3. 05:24
Spring이란? 스프링을 나타내는 의미는 문맥에 따라 다양한데 스프링 DI 컨테이너 기술, 스프링 프레임워크, 스프링 생태계 자체를 의미하기도 한다. 스프링의 주 기술은 스프링 DI 컨테이너, AOP, 이벤트와 같은 것들이 있다. 핵심적인 건 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크라는 것이다. 객체 지향 언어인 자바 언어 기반의 프레임워크로써, 객체 지향 언어가 가진 강력한 특징을 살려낸다. 그렇다면 스프링 부트라는 것도 자바로 백엔드 개발 공부를 하다보면 들어봤을 법한 단어인데, 이는 스프링을 편리하게 사용할 수 있도록 지원해주며 스프링 프레임워크 사용 시 때에 따라 필요한 라이브러리들을 불러올 수 있게 해준다. 스프링 부트의 대표적인 특징은 다음과 같다. - 단독으로 실행..
-
SQL이란 ?Backend Dev/SQL 2022. 1. 31. 11:02
SQL(Structured Query Language) 관계형 데이터베이스에서 데이터를 조작하고 질의하는 표준 수단으로써, 데이터를 비교적 쉽게 검색하고 추가, 삭제, 수정같은 조작을 할 수 있도록 고안된 컴퓨터 언어입니다. 이전에 데이터베이스와 DBMS(DataBase Management System)에 대해 짚고 넘어가도록 해보겠습니다. 데이터베이스는 간단히 말해 데이터의 집합을 의미하며, 여러 시스템들의 통합된 정보들을 저장해 놓고 운영할 수 있는 공간입니다. 복잡하고 다양한 데이터들을 DB에서는 효율적으로 저장, 검색, 갱신 등의 작업을 수행할 수 있도록 데이터 집합들끼리 연관시키고 조직화시킬 수 있습니다. 데이터베이스의 특성은 다음과 같습니다. 실시간 접근성 : 사용자의 요구를 즉시 처리할 수 ..