• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

질문 있습니다.

22.08.20 23:40 작성 조회수 129

0

1. LoginMemberArgumentResolver를
스프링 빈으로 등록해서 WebConfig 클래스에서
resolvers.add() 메서드를 사용할 때 new 연산자를 통해
객체를 생성하지 않고 DI 컨테이너에서 주입 받아서 사용하는건
어떻게 생각하시나요?.
왜 빈으로 등록 안하고 new 연산자로 주입한건 이유도 같이 궁금합니다.


2.
HandlerMethodArgumentResolver를 구현할 때 supportsParameter() 메소드와 resolveArgument() 메소드를 테스트하고 싶은데
파라미터 (MethodParameter, ModelAndView, NativeWebRequest, WebDataBinderFactory) 때문에 테스트를 어떻게 해야할지 모르겠습니다. (mock, spy 없이 하고 싶습니다.)



@Configuration
public class WebConfig implements WebMvcConfigurer {

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(new LoginMemberArgumentResolver());
}
}

 

@Configuration
@RequiredArgsConstructor
public class WebConfig implements WebMvcConfigurer {

private final LoginMemberArgumentResolver loginMemberArgumentResolver;

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(loginMemberArgumentResolver);
}

}

 

 

답변 2

·

답변을 작성해보세요.

0

terry9611님의 프로필

terry9611

질문자

2022.08.21

 

 

@Configuration
public class WebConfig implements WebMvcConfigurer {

private final LoginMemberArgumentResolver loginMemberArgumentResolver = new LoginMemberArgumentResolver();

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(loginMemberArgumentResolver);
}

}

 

그러면 이런식으로 LoginMemeberArgumentResolver를 멤버변수로 지정하여 의존관계를 명확하게  명시하는게 어떨가요?

 

 

 

 

 

 

 

 

 

0

안녕하세요. terry9611님

LoginMemberArgumentResolver를 빈으로 등록하지 않은 이유는 다음과 같습니다.

1. 딱 여기서만 사용하고, 다른 스프링 빈들이 사용하지 않는다.

2. LoginMemberArgumentResolver는 다른 스프링 빈을 의존관계 주입 받지 않는다.

정리하면 빈으로 등록할 만한 이유가 없기 때문입니다.

 

2번 질문은 테스트 하려면 해당 인터페이스의 구현체를 만드셔야 할 것 같아요.

감사합니다.