작성
·
87
0
강사님은 spring 2.4.5 버전입니다. 저는 3.3.4 버전입니다.
테스트 코드 작성 중인데
강사님께서는 @Autowired를 @SpringBootTest없이 사용해도 오류가 안떴는데 저는 뜨네요..
자동 주입된 멤버는 올바른 Spring bean에서 정의되어야 한다고 하는데 버전이 올라가면서 바껴서 이런걸까요
import org.flywaydb.core.Flyway;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class ResetDatabase {
@Autowired
private Flyway flyway;
@BeforeEach
public void setUp(){
flyway.clean();
flyway.migrate();
}
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
스프링 버전이 다르면 사용법이나 기능에서 차이가 발생할 수 있습니다. 그러나 제공된 정보에는 스프링 버전 차이에 따른 @Autowired
사용법의 변화에 대한 구체적인 내용이 없습니다.
문제 해결을 위해 다음을 시도해보세요:
- 스프프링 공식 문서 또는 다른 신뢰할 수 있는 출처를 참조하여 해당 버전의 변화로그를 확인합니다.
- 버전 차이로 인한 문제가 맞는지 확인하기 위해 강사님과 동일한 환경에서 테스트를 시도해 볼 수 있습니다.
@Autowired
는 스프링이 관리하는 빈(Bean)에 대해 자동으로 의존성을 주입할 때 사용합니다. @SpringBootTest
와 같은 테스트 환경 설정 어노테이션 없이 @Autowired
를 사용하려면 대상 클래스가 스프링 컨텍스트에 등록된 빈이어야 합니다. 버전이 다르면 세부적인 동작 방식이나 요구 사항에서 차이가 발생할 수 있으므로, 각 버전의 공식 문서를 참고하는 것이 좋습니다.
스프링 버전 업데이트가 원인일 수도 있지만, 정확한 원인 파악을 위해서는 해당 버전의 공식 문서나 변경 로그를 확인해 보시는 것이 가장 정확합니다.