[TIL] 8월 18일

yeon·2021년 8월 19일
0

UserControllerTest가 갑자기 동작하지 않는다...!

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.itda.apiserver.jwt.TokenProvider' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

에러 로그를 보니 TokenProvider를 빈으로 등록하지 못하고 있다.

아래와 같이 @WebMvcTest를 이용하여 테스트하고 있다.

@WebMvcTest(UserController.class)
public class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private UserService userService;

    @Mock
    private User user;

    private ObjectMapper objectMapper = new ObjectMapper();

    @Test
    @DisplayName("회원 가입 기능 테스트")
    void signUp() throws Exception {

		...
		}
}

공식문서를 보니 @WebMvcTest 를 사용하여 테스트할 때는 @Component는 스캔하지 않는다고 해서 해당 문제가 발생하는 듯 하다.

컴포넌트를 등록하기 위해서 @Import 어노테이션을 사용해서 등록할 클래스를 명시하면 된다.

@WebMvcTest(UserController.class)
@Import(value = {TokenProvider.class, TokenExtractor.class})
public class UserControllerTest {

   ...
}

Oauth 구현, RestTemplate vs WebClient??

RestTemplate은 스프링 버전 5부터 유지 모드로 변경되고 향후 deprecated 될 예정이라고 한다.

Spring에서도 WebClient 사용을 권고하고 있다.

비동기를 지원한다. → 비동기적으로 동작하는 것에 대해 더 학습이 필요하다. (참고하기: https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html )

오늘 한일

  • 이전에 프로젝트에서 oauth를 적용해보았는데도 어렵군..
  • webclient를 학습하면서 oauth 구현하는 중이다.
  • 코테 스터디 진행 - Leet code 세문제 풀었다.

0개의 댓글