728x90
Optional 클래스
Optional<Member>은 함수의 반환값으로 사용할 수 있다. 만약 값이 없으면 Null이 반환 된다. 다만 이걸 받는 쪽에서 Optional의 껍질을 벗기고 싶다면 get()메서드를 사용해 줘야 한다.
public Optional<Member> findById(Long id) {
return Optional.ofNullable(store.get(id));
}
Member result = repository.findById(member.getId()).get();
한번에 변수명 바꾸기
Shift + F6을 하면 한번에 변수명을 바꿀 수 있다.
메서드 추출하기
Ctrl + Alt + M을 사용하면 함수를 추출할 수 있다.
테스트 클래스 추출하기
Ctrl + Shift + T를 사용하면 테스트 클래스를 만들 수 있다.
Test 클래스
테스트클래스에 테스트 하고자하는 클래스에 대응하는 테스트 클래스를 만든다.
관례적으로 이름은 $('기존테스트케이스 이름') + Test 이다.
Assertions 라는 클래스를 사용한다. 메서드는 assertionThat('원래').isEqualsTo('결과')
@Test
public void save() {
Member member = new Member();
member.setName("spring");
repository.save(member);
Member result = repository.findById(member.getId()).get();
Assertions.assertThat(member).isEqualTo(result);
}
또한 @Test 어노테이션을 붙힐것
메서드이름은 관례적으로 테스트 하고자하는 메서드와 같게 함
@AfterEach (소스참고)
각각의 테스트 메서드가 실행된 후에 실행될 메서드
빈 등록
1. 컴포넌트 스캔 방식
그냥 하던대로 @Controller @Service @Repository 붙혀서 하던거
2. 직접 등록
@Configuration 어노테이션을 붙힌 클래스 생성
거기서 @Bean어노테이션을 붙힌 클래스에서 새로운 인스턴스를 생성하면 해당 클래스는 싱글턴 패턴으로 관리됨
@Configuration
public class SpringConfig {
@Bean
MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
728x90