Spring/Spring

스프링의 등장 - 순수 자바 코드에서 스프링까지 1

jddng 2022. 1. 15. 03:07
728x90
반응형

 

스프링의 등장 1 - 과거 순수 자바 코드

 

 과거에는 어떻게 개발을 했고, 왜 스프링이 등장하게 되었는지 알아보자.

 

 

 

회원 클래스 다이어그램

 

 위 클래스 다이어그램으로 순수 자바 코드를 작성해보자. 또한 순수 자바 코드를 작성하면서 단위 test도 진행해보자.

'역활'과 '구현'을 잘 나누어서 구현하자.

 

 

 이제 코딩을 시작해보자. 단 코딩할때 유의할점.. 바로 단위 테스트이다. 실무에서도 중요한게 항상 단위 테스트를 작성하여 에러가 없는지 확인하낟. 위 클래스 다이어 그램대로 코딩을 했으면 바로 단위 테스트를 해보자.

 

회원 등록 단위테스트
package hello.core.member;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

public class MemberServiceTest {

    MemberService memberService = new MemberServiceImpl();

    @Test
    void join(){
        //given
        Member member = new Member(1L, "memberA", Grade.VIP);

        //when

        memberService.join(member);
        Member findMember = memberService.findMember(1L);


        //then
        Assertions.assertThat(member).isEqualTo(findMember);
    }
}

 

주문 도메인 클래스 다이어그램

 위와 같이 추가 요구사항이 발생하였다. 아직 할인 정책을 둘중에 어느것으로 적용할지 정하지 못한 상황이다. 우리는 이와 같은 요구사항일 때 할인 정책을 interface로 구현하여 나중에 회사가 요구하는 할인정책을 역활로 지정해주면 된다.

 

주문 단위 테스트
package hello.core.order;

import hello.core.member.*;
import hello.core.order.Order;
import hello.core.order.OrderService;
import hello.core.order.OrderServiceImpl;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

public class OrderServiceTest {
    MemberService memberService = new MemberServiceImpl();
    OrderService orderService = new OrderServiceImpl();

    // 단위 테스트가 중요하다 순수 자바 코드로 테스트!
    @Test
    void createOrder(){
        Long memberId = 1L;
        Member member = new Member(memberId, "memberA", Grade.VIP);
        memberService.join(member);

        Order order = orderService.createOrder(memberId, "itemA", 10000);
        Assertions.assertThat(order.getDicountPrice()).isEqualTo(1000);
    }
}

 

 단위 테스트를 한다는건 순수 자바 코드로 테스트 할 수 있다는 점이다. 그러니 처음 배울때부터 단위 테스트를 계속 실행하자.

 

 

 

 

 

 

 

 

 

 

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

728x90
반응형