스프링 주문정책

손원진·2023년 4월 4일
0

몰랐다가 알게된 부분


private static HashMap<Long, Member> store = new HashMap<Long, Member>(); 

스테틱을 지정하기 전에는 Map에 값을 저장해도, 메소드 내 map과 관련된 클래스에 새로운 인스턴스를 생성했을 때 저장한 데이터를 가져오지 못한다.


 @Override
    public void join(Member member) {


        MemberRepositoryImpl memberRepository = new MemberRepositoryImpl();

        memberRepository.storeMember(member);

    }

    @Override
    public Member findMember(Long memberId) {

        MemberRepositoryImpl memberRepository = new MemberRepositoryImpl();
        return  memberRepository.findMember(memberId);

    }
    
    

스테틱 변수로 지정하면 다른 메소드에서 새로운 인스턴스를 생성해도, map값을 가져올 수 있는 것 확인 static(고정) 고정값으로 이해


 Assertions.assertThat(order.getDiscountPrice()).isEqualTo(1000);

테스트 코드 작성시 Assertions.assertThat 으로 비교문 작성

테스트 코드가 없다면 일일이 콘솔을 찍어보거나 system.out.println()으로 확인해봐야함

대신 junit 을 사용하여 테스트하고자하는 메소드에 @Test 어노테이션을 붙인 후
비교 대상에

        Assertions.assertThat("a").isEqualTo("b");

를 작성해서 두 변수 혹은 두 객체가 같으면 녹색불로 정상이 나오고 다르면 빨간불이 뜬다

final

final 키워드가 붙은 변수는 초기화 후 변경할 수 없음, 변경하려고 하면 컴파일 에러가 발생 , 클라스에서 final을 붙이면 상속을 할수 없는 클라스가 됨

  • 정리

    final variables, arguments : 값이 변경되지 않도록 만듬
    final class : 클래스를 상속하지 못하도록 만듬
    final method : 메소드가 오버라이드되지 못하도록 만듬

    주의할 점
    final 변수는 초기화 이후 값 변경이 발생하지 않도록 만듭니다.

profile
매일 한 걸음

0개의 댓글