스프링 19

Chapter 04. 스프링 컨테이너와 스프링 빈

4.1 스프링 컨테이너 생성 (1) 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 어노테이션 자바 config기반의 스프링을 만들라는 뜻이다. 일반적으로, 인터페이스 ApplicationContext는 '스프링 컨테이너'라고 한다. 사실, 'ApplicationContext'의 최상위에는 'Bean Factory'가 있다. XML 기반으로 만들 수 있다. 스프링 컨테이너를 생성할 때는 구성 정보를 지정해줘야한다. => 'AppConfig.class' (2)스프링 빈 등록 빈 이름(key), 반환된 값은 빈의 객체로 등록 빈 이름은 항상 달라야한다! 같은 이름..

Chapter 03. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

3.1 새로운 할인 정책 개발 새로운 할인 정책 기획자가 서비스 오픈 직전에 할인 정책을 정률제로 바꾸고 싶다고 하면 어떻게 해야할까? Ex) - RateDiscountPolicy 클래스를 만든다. package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) { if(member.getGrade() == Grade.VIP){ retur..

Chapter 02. 스프링 핵심 원리 이해1 - 예제 만들기

2.1 프로젝트 생성 - Java 11설치 - https://start.spring.io/ -> 다음과 같이 설정한다. generate 한 다음에 압축을 풀고 open - 기본 설정인 Gradle을 아래와 같이 인텔리제이로 바꿔야 속도가 빨라진다. 2.2 비즈니스 요구사항과 설계 회원 회원가입하고 회원을 조회 가능하다. 회원 등급: 일반 / VIP 회원 데이터는 자체 DB를 구축할 수 있고 외부 시스템과 연동 가능 (미확정) 주문과 할인정책 회원은 상품 주문 가능 등급에 따라 할인 정책 적용 가능 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라 (나중에 변경될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고 오픈 직전까지 변경될 수 있다. 심지..

Chapter 01. 객체 지향 설계와 스프링

1.1 자바 진영의 추운 겨울과스프링의 탄생 EJB(Enterprise Java Beans, 엔터프라이즈 자바빈즈)란? 기업 환경의 시스템을 구현하기 위한 서버 측 컴포넌트 모델이다. 즉, 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. 자바 표준 기술 ORM (객체 관계 매핑, 자바 객체를 데이터베이스에 편하게 꺼내 쓸 수 있다. ) EJB의 단점: 어렵고 비싸다. 복잡하고 느리다. EJB에 의존적 스프링의 역사 - release 2002년 「Expert One -on- One J2EE Design and Development」 - Rod Johnson (로드 존슨) 출간 => EJB의 문제점을 비판한다. 이를 기반으로 스프링 발전 2003년 6월에 최초로 아파치 2.0 라이선스로 공개된..

Chapter 08. Account(계좌) 시스템 개발

8.1 프로젝트 생성 및 요구사항 분석 8.1-1 계좌 - 계좌 시스템은 사용자와 계좌 정보를 저장하며 외부 시스템에서 거래를 요청할 경우, 결제 , 결제 취소 , 거래 관리 기능을 제공하는 시스템이다. - 사용자는 신규 등로그 해지, 중지, 사용자 정보 조회 등 기능을 제공 - 계좌는 신규, 해지, 확인 기능을 제공하낟. 인당 최대 10개 계좌를 만들 수 있다. 계좌 번호는 10자리 정수로 이뤄진다. 계좌 생성 API POST/ account 파라미터: 사용자 ID, 초기 잔액 정책: 사용자가 없는 경우, 계좌가 이미 10개인 경우 실패 응답 성공 응답: 사용자 ID, 계좌 번호, 등록 일시 계좌 해지 API DELETER/ account 파라미터: 사용자 ID, 비밀번호 정책: 사용자 계좌가 없는 경..

Chapter 07. 사전 준비

7.1 전체 예제 소개 - 계좌 시스템의 전반적인 구조와 기능 - 스트링 부트 기반으로 진행. - 활용 기술: Spring Boot 2.6.xx, JDK 11, Gradle, Junit5, H2 Database(자바 기반의 오픈 소스 관계형 데이터베이스 관리시스템), JPA, Redis, Mockito, lombok 제공하는 기능 (API) 계좌(account) 관련기능 (생성, 해지, 확인) 거래(Transaction) 관련 기능(잔액 사용, 잔액 사용 취소- 거래 취소, 거래 확인) 7.2 프로젝트 생성 및 의존성(dependency) 추가 추가된 의존성 종류 spring boot starter data jpa: JPA(Java Persistence API)를 지원하기 위한 의존성 spring boo..

Chapter 06. 스프링 MVC(Model-View-Controller)

6.1 스프링 MVC(Model-View-Controller) 전체 구조 소개 6.1-1 스프링 MVC 소개 - 스프링 MVC는 현 시점 국내 IT 서비스 실무에서 가장 많이 활용되는 웹 개발 기술이다. - 웹 개발 기술 변화: HTML(HyperText Markup Language) -> CGI(Common Gatewat Interface) -> Servlet -> Spring MVC -> (미래에는 무엇이 쓰일까?) - 스프링 MVC는 오랫동안 사용되고 있다. - MVC란 소프트웨어 디자인 패턴을 뜻한다. - MVC의 등장: 스파게티처럼 엉켜있는 코드가 MVC, SRP(단일 책임 원칙)과 함께 깔끔하게 정리된다. - MVC를 성공적으로 사용하면 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케..

Chapter 03. 자바에서 스프링으로

3.1 실습 프로젝트 소개 - 편의점 결제 서비스 프로그램 - 스프링 부트 앱을 아주 쉽게 만들어 준다. -> 최근에는 maven보다는 gradle을 많이 쓰는 추세이다. =====================인텔리제이 얼티밋 설치======================= - 인텔리제이 얼티밋 깔고 실행시킨 화면 package com.ran.convpay; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ConvpayApplication { public static void m..

Chapter 02. OOP(Object Oriented Pragramming)와 스프링 프레임워크

1.OOP(Object Oriented Pragramming, 객체 지향 프로그래밍)를 하는 이유 cf) 구들의 모든 서비스의 코드 라인 수는 ? 20억 줄...(2015년 기준) - 이렇게 많은 양을 어떻게 관리할까? (OOP를 잘 하는 방법) 1) 분류 - 코드를 적절히 잘 분류해야한다. 2) 교체 - 특정 모듈을 통째로 변경해야할 수도 있다. - 따라서, OOP는 소프트웨어를 말랑하게 유지하기 위한 것이라고 볼 수 있다. 2. OOP를 잘 하는 방법 - OOP는 데이터(상태, field)와 로직(행위, methods)이 응집되서 상호 교류하면서 동작하도록 만드는 프로그래밍 기법을 말한다. -> OOP를 잘하는 방법 - 분류, 교체 SOLID 원칙 SRP(Singli Responsibility Pri..