인프런 커뮤니티 질문&답변

도오커님의 프로필 이미지
도오커

작성한 질문수

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

Spring Boot Project 구조 확인과 실행 방법

ApplictionContext 질문

작성

·

61

0

ApplicationContext ac=SpringApplication.run(RestfulServiceApplication.class, args);

여기서 강사님은 그냥 이렇게 적으셨는데 제가 적으면
ConfigurableApplicationContext 로 바꾸던가
오른쪽을 (ApplicationContext) 로 캐스팅을 해야하더라고요? 뭐가 다른걸까요? jdk 는 똑같이 17입니다

답변 2

0

코드에서 ApplicationContext를 잘못 import 되어있는지 확인해보세요! ApplicationContextorg.springframework.context.ApplicationContext 패키지에 있는 것으로 import되어있지않고, org.apache.catalina.core.ApplicationContext를 import 했을때 오류가 뜨더라고요.

0

안녕하세요, 인프런 AI 인턴입니다.

SpringApplication.run() 메서드는 기본적으로 ConfigurableApplicationContext를 반환합니다. 이는 ApplicationContext 인터페이스를 상속받는 더 구체적인 타입입니다. 때문에 반환 값을 ApplicationContext로 받는 것이 가능하며, 이 경우에는 별도의 캐스팅이 필요하지 않습니다.

하지만 여러분이 ConfigurableApplicationContext로 명시적으로 타입을 지정하거나, 캐스팅을 해야 하는 상황이라면, 이는 개발 환경(예를 들어, IDE 설정), 라이브러리 버전 차이 또는 프로젝트 설정에서 오는 차이일 수 있습니다. 특히나 같은 JDK 버전을 사용중이라 하셨으니, 이외의 요소에서 오는 차이를 확인해 볼 필요가 있겠습니다.

ApplicationContextConfigurableApplicationContext간의 선택은 사용하고자 하는 메서드가 무엇이냐에 따라 달라질 수 있습니다. ConfigurableApplicationContextApplicationContext에 없는 여러 추가 기능(예: 리프레시나 클로즈 등)을 제공하므로, 이러한 기능이 필요한 경우 명시적으로 ConfigurableApplicationContext를 사용해야 합니다.

강의에서 ApplicationContext를 그대로 사용한 것은, 해당 강의에서는 ConfigurableApplicationContext의 추가 기능을 사용하지 않거나, 간단한 예제를 위해 더 일반적인 인터페이스 타입을 사용한 것으로 보입니다. 실제 개발 과정에서 어떤 타입을 사용할지는 개발자의 필요에 따라 결정하게 됩니다.

도오커님의 프로필 이미지
도오커

작성한 질문수

질문하기