스프링 컨테이너 생성스프링 컨테이너가 생성되는 과정을 알아보자.//스프링 컨테이너 생성ApplicationContext applicationContext = newAnnotationConfigApplicationContext(AppConfig.class);ApplicationContext를 스프링 컨테이너라 한다.ApplicationContext는 인터페이스이다.스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.(요즘에는 XML 사용을 안 한다.)직전에 AppConfig를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다.자바 설정 클래스를 기반으로 스프링 컨테이너(ApplicationContext)를 만들어보자.ne..
Spring
Previous지난 챕터까지 해서 간단하게 스프링의 탄생배경과 스프링이 자바진영을 대표하는 프레임워크인 심플한 이유와 객체지향 프로그래밍의 5가지 원칙(SOLID) 중 OCP(개방폐쇄원칙)와 DIP(의존관계역전원칙)가 제대로 지켜지지 않는 이유에 대해서 알아봤다. 그리고 스프링 없이 예제 코드 작성을 통해 회원-주문 애플리케이션을 요구사항분석부터 작성하면서 구현을 해 보았다.그리고 그 과정에서 OCP, DIP원칙을 지킬 수 없다는 점을 확인했다.이번 챕터를 통해 이런 문제들을 인지하고 객체지향원리를 어떻게 적용하는지 학습한다.새로운 할인 정책 개발기존 구현한 회원-주문의 할인 정책을 다시 떠올려보자.💡 할인 정책은 모든 VIP는 1000원을 할인해 주는 고정 금액 할인을 적용해 달라.(변경가능)등급이 ..
비즈니스 요구사항과 설계회원회원을 가입하고 조회할 수 있다.회원은 일반과 VIP 두 가지 등급이 있다.회원 데이터는 자체 DB를 구축할 수 있고 외부 시스템과 연동할 수 있다.(미확정)주문과 할인 정책회원은 상품을 주문할 수 있다.할인 정책은 모든 VIP는 1000원을 할인해 주는 고정 금액 할인을 적용해 달라.(변경가능)할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 있다.(미확정)이런 요구사항을 보면 회원 데이터나 할인 정책 등은 확정 난 게 없어 결정이 어렵다.하지만 결정이 될 때까지 개발을 기다릴 수도 없기에 유연하고 변경이 용이한 객체 지향 설계를 통해 개발을 시작해 보자.참고로 스프링이 없..
스프링의 탄생스프링은 언제, 왜, 어떻게 나왔을까?이를 살펴보기위해선 EJB(Enterprise Java Beans)부터 알아야 한다. EJB는 2000년 초반에 나온 기술인데, 스프링, JPA, 등등의 각 기능들이 다 합쳐진 프레임워크라고 보면 된다. 게다가 자바 표준에서 나온 기술이기에 많은 보급이 되었는데, EJB에서는 많은 장점들(컨테이너, 설정에 의한 트랜잭션 관리, 분산 기술, ORM)이 있었기에, 서버하나에 수천만원 임에도 금융권에서는 많이들 사용되었다.하지만, 장점만 있었을까? EJB는 일단 러닝커브가 무척이나 가파르다. 사용하기가 너무 복잡하고 어렵고 느릴뿐더러 라이프 사이클이 어떻게 돌아가는지도 알기 힘들다보니, 개발자들은 POA(Plan Old Java)라고 다시 옛날 자바로 돌아가..