[Spring] Bean 객체와 Bean이 아닌 객체를 구별하는 방법 #152
-
안녕하세요. // WebConfig.kt
@Configuration
class WebConfig(
private val userArgumentResolver: UserArgumentResolver,
) : WebMvcConfigurer {
override fun addArgumentResolvers(resolvers: MutableList<HandlerMethodArgumentResolver>) {
resolvers.add(userArgumentResolver)
}
} 반면에 아래 코드에서 authenticate의 파라미터인 accessToken은 Bean이 아닙니다. // UserServiceImpl.kt
@Service
class UserServiceImpl(
private val userRepository: UserRepository,
) : UserService {
override fun authenticate(accessToken: String): User {
...
}
} 두 가지 경우 모두 Bean 객체의 메서드의 파라미터인데, resolvers는 Bean을 주입받는 것 같고 accessToken은 Bean이 아닌 것 같습니다. |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 2 replies
-
오른쪽에 Labels가 있긴 한데 제가 추가하거나 수정할 수 없는 것 같습니다. Reviewer 지정 못 하는 것처럼 권한 문제가 있는 건가요? |
Beta Was this translation helpful? Give feedback.
-
안녕하세요~ 너무 좋은 주제네요 (1) 정확하지 않을 수 있지만, 결론만 말씀드리면 인자로 받은 resolvers는 빈이 아닙니다. week1 세미나에서 스프링에서 언급해주신 (2)
도움이 되셨기를 바랍니다! (_ _) |
Beta Was this translation helpful? Give feedback.
-
감사합니다! 정리하면
인 것 같은데, 올바르게 이해한 것이 맞을까요? 추가로 답변의 예시 코드에서 |
Beta Was this translation helpful? Give feedback.
안녕하세요~ 너무 좋은 주제네요
(1)
정확하지 않을 수 있지만, 결론만 말씀드리면 인자로 받은 resolvers는 빈이 아닙니다.
week1 세미나에서
RequestHandlerMapping
를 다뤘었는데요. 정확히 설명은 안드렸는데DispatcherServlet
이 요청을 처리할 때RequestHandlerMapping
말고도RequestHandlerMappingAdapter
를 사용합니다. (요 클래스는 pdf 18쪽 이미지에 등장하긴 합니다)스프링에서
RequestHandlerMappingAdapter
를 빈으로 만드는데요,RequestHandlerMappingAdapter
는 프로퍼티로 argumentResolvers를 가지고 있습니다.언급해주신
resolvers
는 빈 리스트로 시작해서 여러addArgumentResolvers()
의 인자로 들어가서, 점차 채워집니다. 그리고 채워진 resolvers가RequestHandlerMappingAdapter
의 argumentResolvers 프로퍼티로 들어가게 됩니다.(2)
@Configuration
이 붙은 클래스의 함수에서 인자가 Bean임을 확인하는 방법은 간단한데요. 함수에@Bean
어노테이션 여부가 곧 인자가 빈인지 아닌지를 결정합니다.