본문 바로가기

Spring/개념11

[스프링기본] CH03. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 1. 새로운 할인 정책 개발 새로운 할인 정책 - 고정 금액 아닌 주문한 금액의 %를 할인해주는 정률 할인으로 변경 RateDiscountPolicy # 정률 할인 코드 추가 public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; @Override public int discount(Member member, int price) { if(member.getGrade() == Grade.VIP){ return price * discountPercent / 100; } else { return 0; } } } # 정률 할인 테스트 @Test @DisplayName("VIP가 아니면 할인이 적용되지 .. 2021. 8. 31.
[스프링기본] CH02. 스프링 핵심 원리 이해1 - 예제 만들기 1. 비즈니스 요구사항과 설계 회원 - 회원은 가입하고 조회 가능 - 회원은 일반과 VIP 두 가지 등급 존재 - 회원 데이터는 자체 DB를 구축할 수도 있고, 외부 시스템과 연동할 수도 있음 (미확정) 주문과 할인 정책 - 회원은 상품을 주문 - 회원 등급에 따라 할인 정책 적용 - 할인 정책은 모든 VIP는 1000원 할인해주는 고정 금액 할인 적용 (나중에 변경 가능) - 할인 정책은 변경 가능성 높음, 기본 할인 정책을 아직 정하지 못했고 할인을 적용하지 않을 수도 있음 (미확정) 회원 데이터, 할인 정책 변동성 높음 ⇒ 인터페이스 만들고 구현체로 바꿀 수 있게 설계 2. 회원 도메인 설계 회원 도메인 요구사항 - 회원은 가입하고 조회 가능 - 회원은 일반과 VIP 두 가지 등급 존재 - 회원 데.. 2021. 8. 18.
[스프링기본] CH01. 객체지향설계와 스프링 1. 스프링이란? 1.1 스프링의 핵심 ⇒ 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 1.2 스프링 프레임워크 핵심 기술, 웹 기술, 데이터 접근 기술, 기술 통합, 테스트, 언어 등의 다양한 기술 지원 1.3. 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원 단독 실행 가능한 스프링 애플리케이션 쉽게 생성 별도의 웹 서버 설치 X 손쉬운 빌드 구성을 위한 starter 종속성 제공 스프링과 3rd parth(외부) 라이브러리 자동 구성 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공 관례에 의한 관결한 설정 2. 좋은 객체 지향 프로그래밍 2.1 객체지향 특징 추상화 캡슐화 상속 다형성 2.2. 객체 지향 프로그래밍 컴퓨터 프로그램을 객체들의 모임으로 파악, .. 2021. 8. 16.
[스프링입문] CH07. AOP 1. AOP(Aspect Oriented Programming) 1.1 AOP가 필요한 상황 상황 - 모든 메소드의 호출 시간 측정 - 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core cocern) - 회원 가입 시간, 회원 조회 시간 측정 문제 - 시간을 측정하는 기능 → 공통 관심 사항 O, 핵심 관심사항 X - 시간 측정 로직과 핵심 비즈니스 로직 섞여 유지보수 어려움 - 시간 측정 로직을 별도의 공통 로직으로 만들기 어려움 - 시간 측정 로직 변경 시, 모든 로직 찾아가 변경해야 함 # MemberService @Transactional public class MemberService { /** * 회원가입 */ public Long join(Member m.. 2021. 8. 13.
[스프링입문] CH06. 스프링 DB 접근 기술 1. H2 데이터 베이스 설치 데이터 베이스 파일 생성 - JDBC URL을 jdbc:h2:~/test 으로 최초 접속 - ~/test.mv.db 파일 생성확인 - 이 후 JDBC URL : jdbc:h2:tcp://localhost/~/test 테이블 생성 - Long(java) → bigint(db) - generate by deault as identity : null 값 일 때, 자동으로 id값 채워짐 drop table if exists member CASCADE; create table member ( id bigint generated by default as identity, /* null 값 일 때, 자동으로 id값 채워짐 */ name varchar(255), primary key (i.. 2021. 8. 13.
[스프링입문] CH05. 회원 관리 예제 - 웹MVC 개발 1. 회원 웹 기능 - 홈 화면 추가 웰컴 페이지 우선순위 - 1. 컨트롤러에서 매핑되는 것 2. index.html ⇒ 컨트롤러가 정적파일보다 우선순위 높다 # 홈 컨트롤러 @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } # 회원 관리용 홈 Hello Spring 회원 기능 회원 가입 회원 목록 2. 회원 웹 기능 - 등록 createMemberForm의 name과 MemberForm의 name 매핑 과정 : localhost:8080/members/new → localhost:8080/members/createMemberForm 이동 → 이름 등록 → action에 있는.. 2021. 8. 10.