스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 할인 정책 적용과 문제점 이전글 비즈니스 요구사항과 설계에서 나오는 코드들을 활용하여 객체 지향 원리에 대하여 알아보겠다. 할인 정책에는 고정 할인 정책인 FixDiscountPolicy와 정률 할인 정책인 RateDiscountPolicy가 존재한다. 따라서, 원하는 할인 정책을 애플리케이션에 적용하려면 클라이언트인 OrderServiceImpl의 코드를 변경하여야 한다. public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixD..
스프링 핵심 원리 - 기본편 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 비즈니스 요구사항과 설계 이후 글에서 다룰 예제에 대한 비즈니스 요구사항과 설계를 먼저 살펴보겠다. 지금은 스프링을 사용하지 않는 순수 자바 코드로 개발해보겠다. 스프링 관련해서는 뒷 챕터에 나온다. - 회원 가입과 조회 - 회원 등급은 BASIC과 VIP 두 가지 등급이 존재 - 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동 가능(미확정) - 회원은 상품 주문 가능 - 회원 등급에 따라 할인 정책 적용 가능 - 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 할인 금액 적용.(후에 변경가능성 있음) - 할인 정책은 변경 가능성이 높음. 요구사항을 보..
스프링 핵심 원리 - 기본편의 복습을 위한 글이며, 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. Spring? Spring이 무엇인가에 대하여 설명하기 앞서, Framework의 개념부터 살펴보겠다. 1.1 Framework FrameWork란 어플리케이션 개발에 바탕이 되는 템플릿과 같은 역할을 하는 클래스들과 인터페이스의 집합이다. 즉, 프로그램의 전체적인 구조와 흐름을 확정지으며, 프로그래머가 정의해야할 메소드의 이름까지 결정짓는 역할까지 한다. 1.2 Spring Framework Spring도 마찬가지로 프레임워크의 한 종류이다. 스프링 공식 규격에 따르면 Spring Framework는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 ..
Annotation Annotation(@)은 사전적 의미로 주석이라는 뜻이다. 자바에서Annotation(@)은 코드 사이에 주석처럼 쓰이며, 특별한 의미, 기능을 수행하도록 하는 기술이다. 즉, 프로그램에게 추가적인 정보를 제공해주는 '메타 데이터'라고 볼 수도 있다. 메타 데이터(Meta Data) : 데이터를 위한 데이터 Annotation(@)은 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공하고, 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공하는 역할도 한다. 또한, 실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공한다. Spring 관련 Annotation @Bean @Bean은 개발자가 직접 제어가 불가능한 외부 라이브러리등을 Bean으..
Stack과 Queue 스택(Stack)은 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO(Last In First Out)구조로 되어 있고, 큐(Queue)는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out)구조로 되어있다. 1. 순차적으로 데이터를 추가하고 삭제하는 스택에는 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합하다. 2. 큐는 데이터의 추가/삭제가 쉬운 LinkedList로 구현하는것이 적절하다. - ArrayList와 같은 배열기반의 클래스로 구현하게 되면, 데이터를 꺼낼 때 마다 빈 공간을 채우기 위해 데이터의 복사가 발생하기 때문이다. import java.util.LinkedList; import java.util.Queue..
컬렉션 프레임웍(Collections Framework) 컬렉션 프레임웍이란, '데이터 군을 저장하는 클래스들을 표준화한 설계'를 뜻한다. 컬렉션은 다수의 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다. 컬렉션 프레임웍은 컬렉션, 다수의 데이터를 다루는 데 필요한 다양하고 풍부한 클래스들을 제공하기 때문에 프로그래머의 짐을 상당히 덜어 주고 있으며, 또한 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있기 때문에 사용법을 익히기에도 편리하고 재사용성이 높은 코드를 작성할 수 있다는 장점이 있다. 컬렉션 프레임웍의 핵심 인터페이스 컬렉션 프레임웍에서는 컬렉션데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 각 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터..