반응형
09. 09. 가게 상세 - 2 -10. 10. 의존성 주입
repository 만들음
package kr.co.fastcampus.eatgo.domain;
import org.springframework.data.repository.CrudRepository;
import java.util.List;
public interface ReservationRepository
extends CrudRepository<Reservation, Long> {
List<Reservation> findAllByRestaurantId(Long restaurantId);
Reservation save(Reservation reservation);
}
Dependency Injection : 스프링 가장 큰 특징( 객체 강한 연결을 유연하게 가능)
dependency: 의존성 - 의존관계
( 둘 이상의 객체의 서로 협력 예) A는 B 에 의존, A는 B를 사용 , B의 변화에 A가 영향 받음)
-> controller 는 repository 에 의존
Spring IoC Container : 객체를 만들어주고 연결하는 걸 스프링에서 직접 관리 함.
@Component, @Autowired
@Component: repository 를 스프링이 직접 관리하게 해준다.
@RestController 또한 @Component의 일종이다. 스프링이 직접 관리하게 해준다.
@Autowired: 객체를 알아서 생성해서 넣어준다.
@Autowired
private ReservationService reservationService;
// private ReservationService reservationService =new ReservationService();와 완벽하게 똑같다.
test 부분에서
@WebMvcTest(ReservationController.class)// 이것을 사용하면 외부 저장소 를 연동을 못함
public class ReservationControllerTests {
//-> controller 에 직접 의존성을 주입해줘야함.
//-> @SpyBean(ReservationRepository.class) -> controller 에 원하는 객체 주입 가능
// privatee ReservationRepository reservationRepository;// 사용할 객체 다양하게 변경 가능
@Autowired
private MockMvc mvc;
@MockBean
private ReservationService reservationService;
@Test
public void list() throws Exception {
String token = "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjIwMjAsIm5hbWUiOiJPd25lciIsInJlc3RhdXJhbnRJZCI6MTAwNH0.a5n4PWJ2-3yVyMaLGG0HSPXtH_mgpOvofpQ1OFkgDOQ";
mvc.perform(get("/reservations")
.header("Authorization", "Bearer " + token))
.andExpect(status().isOk());
verify(reservationService).getReservations(1004L);
}
}
repository 인터페이스로 변경함.
클래스의 내용물 인터페이스로 변경
자바 인강이 듣고 싶다면 =>https://bit.ly/3ilMbIO
반응형
'스프링, 자바' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 47회차 미션 (0) | 2020.09.25 |
---|---|
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 46회차 미션 (0) | 2020.09.24 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 44회차 미션 (0) | 2020.09.22 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 43회차 미션 (0) | 2020.09.21 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 42회차 미션 (0) | 2020.09.20 |